diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index f09f036..ad048ee 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -327,6 +327,7 @@
   complex amplitude = 0.0;
   float TOA = 0.0;
   float avgPwr = 0.0;
+#ifdef ENERGY_DETECT
   if (!energyDetect(*vectorBurst, 20 * mSPS, mEnergyThreshold, &avgPwr)) {
      LOG(DEBUG) << "Estimated Energy: " << sqrt(avgPwr) << ", at time " << rxBurst->getTime();
      double framesElapsed = rxBurst->getTime()-prevFalseDetectionTime;
@@ -341,7 +342,7 @@
      return NULL;
   }
   LOG(DEBUG) << "Estimated Energy: " << sqrt(avgPwr) << ", at time " << rxBurst->getTime();
-
+#endif
   // run the proper correlator
   bool success = false;
   if (corrType==TSC) {
diff --git a/Transceiver52M/sigProcLib.cpp b/Transceiver52M/sigProcLib.cpp
index a647f84..b0ef21a 100644
--- a/Transceiver52M/sigProcLib.cpp
+++ b/Transceiver52M/sigProcLib.cpp
@@ -653,8 +653,27 @@
   return pVal;
 }
 
-  
- 
+static complex fastPeakDetect(const signalVector &rxBurst, float *index)
+{
+  float val, max = 0.0f;
+  complex amp;
+  int _index = -1;
+
+  for (int i = 0; i < rxBurst.size(); i++) {
+    val = rxBurst[i].norm2();
+    if (val > max) {
+      max = val;
+      _index = i;
+      amp = rxBurst[i];
+    }
+  }
+
+  if (index)
+    *index = (float) _index;
+
+  return amp;
+}
+
 complex peakDetect(const signalVector &rxBurst,
 		   float *peakIndex,
 		   float *avgPwr) 
@@ -928,12 +947,15 @@
     return -1;
   }
 
-  _amp = peakDetect(corr, &_toa, NULL);
+  _amp = fastPeakDetect(corr, &_toa);
+
+  /* Restrict peak-to-average calculations at the edges */
   if ((_toa < 3) || (_toa > len - 3))
     goto notfound;
 
   peak = corr.begin() + (int) rint(_toa);
 
+  /* Compute peak-to-average ratio. Reject if we don't have enough values */ 
   for (int i = 2 * sps; i <= 5 * sps; i++) {
     if (peak - i >= corr.begin()) {
       avg += (peak - i)->norm2();
@@ -953,9 +975,14 @@
   if (par < thresh)
     goto notfound;
 
+   /* Run the full peak detection to obtain interpolated values */
+  _amp = peakDetect(corr, &_toa, NULL);
+
   /* Subtract forward tail bits from delay */
   if (toa)
     *toa = _toa - 8 * sps;
+
+  /* Normalize our channel gain */
   if (amp)
     *amp = _amp / gRACHSequence->gain;
 
