diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index 61da416..d5b75d7 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -429,7 +429,7 @@
   case V:
     state->fillerModulus[timeslot] = 51;
     break;
-    //case V: 
+    //case V:
   case VII:
     state->fillerModulus[timeslot] = 102;
     break;
@@ -544,7 +544,7 @@
 
 /*
  * Pull bursts from the FIFO and handle according to the slot
- * and burst correlation type. Equalzation is currently disabled. 
+ * and burst correlation type. Equalzation is currently disabled.
  */
 SoftVector *Transceiver::pullRadioVector(GSM::Time &wTime, double &RSSI, bool &isRssiValid,
                                          double &timingOffset, double &noise,
@@ -655,7 +655,7 @@
     mTxPriorityQueues[i].clear();
 }
 
-  
+
 void Transceiver::driveControl(size_t chan)
 {
   int MAX_PACKET_LENGTH = 100;
@@ -804,7 +804,7 @@
       LOG(WARNING) << "bogus message on control interface";
       sprintf(response,"RSP SETSLOT 1 %d %d",timeslot,corrCode);
       return;
-    }     
+    }
     mStates[chan].chanType[timeslot] = (ChannelCombination) corrCode;
     setModulus(timeslot, chan);
     sprintf(response,"RSP SETSLOT 0 %d %d",timeslot,corrCode);
@@ -852,14 +852,14 @@
     frameNum = (frameNum << 8) | (0x0ff & buffer[i+1]);
 
   LOG(DEBUG) << "rcvd. burst at: " << GSM::Time(frameNum,timeSlot);
-  
+
   int RSSI = (int) buffer[5];
   BitVector newBurst(burstLen);
   BitVector::iterator itr = newBurst.begin();
   char *bufferItr = buffer+6;
-  while (itr < newBurst.end()) 
+  while (itr < newBurst.end())
     *itr++ = *bufferItr++;
-  
+
   GSM::Time currTime = GSM::Time(frameNum,timeSlot);
 
   addRadioVector(chan, newBurst, RSSI, currTime);
@@ -945,7 +945,7 @@
 {
 
   /**
-      Features a carefully controlled latency mechanism, to 
+      Features a carefully controlled latency mechanism, to
       assure that transmit packets arrive at the radio/USRP
       before they need to be transmitted.
 
@@ -956,7 +956,7 @@
 
 
   RadioClock *radioClock = (mRadioInterface->getClock());
-  
+
   if (mOn) {
     //radioClock->wait(); // wait until clock updates
     LOG(DEBUG) << "radio clock " << radioClock->get();
diff --git a/Transceiver52M/Transceiver.h b/Transceiver52M/Transceiver.h
index 6f9cb92..26d6c3c 100644
--- a/Transceiver52M/Transceiver.h
+++ b/Transceiver52M/Transceiver.h
@@ -89,7 +89,7 @@
 /** The Transceiver class, responsible for physical layer of basestation */
 class Transceiver {
 public:
-  /** Transceiver constructor 
+  /** Transceiver constructor
       @param wBasePort base port number of UDP sockets
       @param TRXAddress IP address of the TRX manager, as a string
       @param wSPS number of samples per GSM symbol
@@ -169,7 +169,7 @@
 
   GSM::Time mTransmitLatency;             ///< latency between basestation clock and transmit deadline clock
   GSM::Time mLatencyUpdateTime;           ///< last time latency was updated
-  GSM::Time mTransmitDeadlineClock;       ///< deadline for pushing bursts into transmit FIFO 
+  GSM::Time mTransmitDeadlineClock;       ///< deadline for pushing bursts into transmit FIFO
   GSM::Time mLastClockUpdateTime;         ///< last time clock update was sent up to core
 
   RadioInterface *mRadioInterface;	  ///< associated radioInterface object
@@ -275,4 +275,3 @@
 
 /** transmit queueing thread loop */
 void *TxUpperLoopAdapter(TransceiverChannel *);
-
