diff --git a/corsika/modules/radio/CoREAS.hpp b/corsika/modules/radio/CoREAS.hpp
index 7600232a63b5d978bf619209d5916e0692a492fd..9907baf56c63403aa97a12c61e3ecefc8080317c 100755
--- a/corsika/modules/radio/CoREAS.hpp
+++ b/corsika/modules/radio/CoREAS.hpp
@@ -37,7 +37,7 @@ namespace corsika {
      */
     template <typename... TArgs>
     CoREAS(TRadioDetector& detector, TArgs&&... args)
-        : RadioProcess<TRadioDetector, CoREAS, TPropagator>(detector, args...){}
+        : RadioProcess<TRadioDetector, CoREAS, TPropagator>(detector, args...) {}
 
     /**
      * Simulate the radio emission from a particle across a track.
@@ -52,155 +52,113 @@ namespace corsika {
     ProcessReturn simulate(Particle& particle, Track const& track) {
 
       // get the global simulation time for that track. (best guess for now)
-      auto startTime_ {particle.getTime()}; // time at the start point of the track hopefully.
+      auto startTime_{particle.getTime()}; // time at the start point of the track hopefully.
       std::cout << "startTime_: " << startTime_ << std::endl;
-      auto endTime_ {particle.getTime() + track.getDuration()};
+      auto endTime_{particle.getTime() + track.getDuration()};
       std::cout << "endTime_: " << endTime_ << std::endl;
       std::cout << "track.getDuration(): " << track.getDuration() << std::endl;
 
       // gamma factor is calculated using beta
-//       auto startGamma_ {1. / sqrt(1. - (startBeta_ * startBeta_))};
-//       auto endGamma_ {1. / sqrt(1. - (endBeta_ * endBeta_))};
+      //       auto startGamma_ {1. / sqrt(1. - (startBeta_ * startBeta_))};
+      //       auto endGamma_ {1. / sqrt(1. - (endBeta_ * endBeta_))};
 
       // get start and end position of the track
-      auto startPoint_ {track.getPosition(0)};
-      std::cout << "EDO EINAI I ARXI: " << startPoint_ << std::endl;
-      auto endPoint_ {track.getPosition(1)};
-      std::cout << "EDO EINAI TO TELOS: " << endPoint_ << std::endl;
+      auto startPoint_{track.getPosition(0)};
+      std::cout << "STARTPOINT : " << startPoint_ << std::endl;
+      auto endPoint_{track.getPosition(1)};
+      std::cout << "ENDPOINT : " << endPoint_ << std::endl;
 
       // beta is velocity / speed of light. Start & end should be the same!
-//      auto beta_ {static_cast<double>((endPoint_.distance_to(startPoint_) / 1_m ) / (endTime_/ 1_s - startTime_/ 1_s) )};
-//      auto beta_ {((endPoint_.distance_to(startPoint_)) / (endTime_ - startTime_)).normalized()};
-      auto beta_ {((endPoint_ - startPoint_) / (constants::c * (endTime_ - startTime_))).normalized()};
+      // auto beta_ {static_cast<double>((endPoint_.distance_to(startPoint_) / 1_m ) / (endTime_/ 1_s - startTime_/ 1_s) )};
+      // auto beta_ {((endPoint_.distance_to(startPoint_)) / (endTime_ - startTime_)).normalized()};
+      auto beta_{((endPoint_ - startPoint_) / (constants::c * (endTime_ - startTime_))).normalized()};
       std::cout << "BETA_: " << beta_ << std::endl;
 
       // get particle charge
-      auto const charge_ {get_charge(particle.getPID())};
+      auto const charge_{get_charge(particle.getPID())};
 
       // set threshold for application of ZHS-like approximation.
-      const double approxThreshold_ {1.0e-3};
+      const double approxThreshold_{1.0e-3};
 
       // we loop over each antenna in the collection.
       for (auto& antenna : detector_.getAntennas()) {
 
-        // use something different than vector (maybe pairs)
-        std::vector<ElectricFieldVector> EVstart_;
-        std::vector<ElectricFieldVector> EVend_;
-        std::vector<TimeType> startTTimes_;
-        std::vector<TimeType> endTTimes_;
-        std::vector<double> preDoppler;
-        std::vector<double> postDoppler;
-        std::vector<Vector<dimensionless_d>> ReceiveVectorsStart_;
-        std::vector<Vector<dimensionless_d>> ReceiveVectorsEnd_;
-
         // get the Path (path1) from the start "endpoint" to the antenna.
         // This is a Signal Path Collection
-        auto paths1 {this->propagator_.propagate(startPoint_, antenna.getLocation(), 1_m)}; // TODO: Need to add the stepsize to .propagate()!!!!
-
-        // now loop over the paths for startpoint that we got above
-        for (auto const& path : paths1) {
-
-          // calculate preDoppler factor
-          double preDoppler_{1. - path.average_refractive_index_ * beta_.dot(path.emit_)};
-
-          std::cout << "Path Emit PRE: " << beta_.dot(path.emit_) << std::endl;
-
-          std::cout << "preDoppler: " << preDoppler_<< std::endl;
-          long double preDoppler_1{1. - path.average_refractive_index_ * beta_.dot(path.emit_)};
-          std::cout << "preDoppler1: " << preDoppler_1<< std::endl;
-
-
-          // store it to the preDoppler std::vector for later comparisons
-          preDoppler.push_back(preDoppler_);
-
-          // calculate receive times for startpoint
-          auto startPointReceiveTime_ {path.total_time_ + startTime_};
-          std::cout << "START RECEIVE TIME: " << startPointReceiveTime_ << std::endl;
-
-          // store it to startTTimes_ std::vector for later use
-          startTTimes_.push_back(startPointReceiveTime_);
-
-          // store the receive unit vector
-          ReceiveVectorsStart_.push_back(path.receive_);
-
-          // calculate electric field vector for startpoint
-          ElectricFieldVector EV1_=
-                     path.receive_.cross(path.receive_.cross(beta_)).getComponents() /
-                     (path.R_distance_ * preDoppler_) * (1 / (4 * M_PI * track.getDuration())) * ((1 / constants::epsilonZero) * (1 / constants::c)) * charge_;
-
-          // store it to EVstart_ std::vector for later use
-          EVstart_.push_back(EV1_);
-
-        } // End of looping over paths1
+        auto paths1{this->propagator_.propagate(
+            startPoint_, antenna.getLocation(),
+            1_m)}; // TODO: Need to add the stepsize to .propagate()!!!!
 
         // get the Path (path2) from the end "endpoint" to the antenna.
         // This is a SignalPathCollection
-        auto paths2 {this->propagator_.propagate(endPoint_, antenna.getLocation(), 1_m)};
-
-        // now loop over the paths for endpoint that we got above
-        for (auto const& path : paths2) {
-
-          double postDoppler_{1. - path.average_refractive_index_ *
-                                   beta_.dot(path.emit_)}; // maybe this is path.receive_ (?)
-
-          std::cout << "Path Emit POST: " << beta_.dot(path.emit_) << std::endl;
-
-          std::cout << "postDoppler: " << postDoppler_<< std::endl;
-          long double postDoppler_1{1. - path.average_refractive_index_ *
-                                   beta_.dot(path.emit_)}; // maybe this is path.receive_ (?)
-          std::cout << "postDoppler1: " << postDoppler_1 << std::endl;
-
-          // store it to the postDoppler std::vector for later comparisons
-          postDoppler.push_back(postDoppler_);
-
-          // calculate receive times for endpoint
-          auto endPointReceiveTime_ {path.total_time_ + endTime_};
-          std::cout << "END RECEIVE TIME: " << endPointReceiveTime_ << std::endl;
-
-
-          // store it to endTTimes_ std::vector for later use
-          endTTimes_.push_back(endPointReceiveTime_);
-
-          // store the receive unit vector
-          ReceiveVectorsEnd_.push_back(path.receive_);
-
-          // calculate electric field vector for endpoint
-          ElectricFieldVector EV2_=
-                     path.receive_.cross(path.receive_.cross(beta_)).getComponents() /
-                     (path.R_distance_ * postDoppler_) * ((-1) / (4 * M_PI * track.getDuration())) * ((1 / constants::epsilonZero) * (1 / constants::c)) * charge_;
-
-          // store it to EVstart_ std::vector for later use
-          EVend_.push_back(EV2_);
-
-        } // End of looping over paths2
-
-        // start doing comparisons for preDoppler and postDoppler
-        // first check that start and end paths have the same number of paths
-        if (EVstart_.size() == EVend_.size()) {
-
-          // use this to access different elements of std::vectors
-          std::size_t index = 0;
-          for (auto& preDoppler__ : preDoppler) {
-            std::cout << "preDoppler__: " << preDoppler__ << std::endl;
-            std::cout << "postDoppler.at(index): " << postDoppler.at(index) << std::endl;
-
-            // TODO: We need to check this. Something funny is happening here.
-            // redistribute contributions over time scale defined by the observation time resolution
-            // this is to make sure that "start" and "end" won't end up in the same bin (xtensor)!!
-            if ((preDoppler__ < 1.e-9) || (postDoppler.at(index) < 1.e-9)) {
+        auto paths2{this->propagator_.propagate(endPoint_, antenna.getLocation(), 1_m)};
+
+        if (paths1.size() == paths2.size()) {
+          for (size_t i = 0; (i < paths1.size() && i < paths2.size()); i++) {
+
+            // First start with the 'start' point
+            // calculate preDoppler factor
+            double preDoppler_{1. - paths1[i].average_refractive_index_ *
+                                    beta_.dot(paths1[i].emit_)};
+            std::cout << "preDoppler: " << preDoppler_<< std::endl;
+
+            // calculate receive times for startpoint
+            auto startPointReceiveTime_{paths1[i].total_time_ + startTime_};
+            std::cout << "START RECEIVE TIME: " << startPointReceiveTime_ << std::endl;
+
+            // get receive unit vector at 'start'
+            auto ReceiveVectorStart_ {paths1[i].receive_};
+            std::cout << "BETA DOT Path Emit PRE: " << beta_.dot(paths1[i].emit_) << std::endl;
+
+            // calculate electric field vector for startpoint
+            ElectricFieldVector EV1_ =
+                paths1[i]
+                    .receive_.cross(paths1[i].receive_.cross(beta_))
+                    .getComponents() /
+                (paths1[i].R_distance_ * preDoppler_) *
+                (1 / (4 * M_PI * track.getDuration())) *
+                ((1 / constants::epsilonZero) * (1 / constants::c)) * charge_;
+
+            // Now continue with the 'end' point
+            // calculate postDoppler factor
+            double postDoppler_{
+                1. - paths2[i].average_refractive_index_ *
+                     beta_.dot(paths2[i].emit_)}; // maybe this is path.receive_ (?)
+            std::cout << "postDoppler: " << postDoppler_<< std::endl;
+
+            // calculate receive times for endpoint
+            auto endPointReceiveTime_{paths2[i].total_time_ + endTime_};
+            std::cout << "END RECEIVE TIME: " << endPointReceiveTime_ << std::endl;
+
+            // get receive unit vector at 'end'
+            auto ReceiveVectorEnd_ {paths2[i].receive_};
+            std::cout << "BETA DOT Path Emit POST: " << beta_.dot(paths2[i].emit_) << std::endl;
+
+            // calculate electric field vector for endpoint
+            ElectricFieldVector EV2_ =
+                paths2[i]
+                    .receive_.cross(paths2[i].receive_.cross(beta_))
+                    .getComponents() /
+                (paths2[i].R_distance_ * postDoppler_) *
+                ((-1) / (4 * M_PI * track.getDuration())) *
+                ((1 / constants::epsilonZero) * (1 / constants::c)) * charge_;
+
+            //////////////////////////////////////////////////////////////////////////////
+            // start comparing stuff
+            if ((preDoppler_ < 1.e-9) || (postDoppler_ < 1.e-9)) {
 
               auto gridResolution_ {antenna.duration_};
-              auto deltaT_ { endTTimes_.at(index) - startTTimes_.at(index) };
+              auto deltaT_ { endPointReceiveTime_ - startPointReceiveTime_ };
 
               if (std::fabs(deltaT_ / 1_s) < gridResolution_ / 1_s) {
 
-                EVstart_.at(index) = EVstart_.at(index) * std::fabs(deltaT_ / gridResolution_);
-                EVend_.at(index) = EVend_.at(index) * std::fabs(deltaT_ / gridResolution_);
+                EV1_ = EV1_ * std::fabs(deltaT_ / gridResolution_);
+                EV2_ = EV2_ * std::fabs(deltaT_ / gridResolution_);
 
-                const long startBin = static_cast<long>(std::floor(startTTimes_.at(index)/gridResolution_+0.5l));
-                const long endBin = static_cast<long>(std::floor(endTTimes_.at(index)/gridResolution_+0.5l));
-                const double startBinFraction = (startTTimes_.at(index)/gridResolution_)-std::floor(startTTimes_.at(index)/gridResolution_);
-                const double endBinFraction = (endTTimes_.at(index)/gridResolution_)-std::floor(endTTimes_.at(index)/gridResolution_);
+                const long startBin = static_cast<long>(std::floor(startPointReceiveTime_/gridResolution_+0.5l));
+                const long endBin = static_cast<long>(std::floor(endPointReceiveTime_/gridResolution_+0.5l));
+                const double startBinFraction = (startPointReceiveTime_/gridResolution_)-std::floor(startPointReceiveTime_/gridResolution_);
+                const double endBinFraction = (endPointReceiveTime_/gridResolution_)-std::floor(endPointReceiveTime_/gridResolution_);
 
                 // only do timing modification if contributions would land in same bin
                 if (startBin == endBin) {
@@ -209,11 +167,11 @@ namespace corsika {
                   if (deltaT_ / 1_s >= 0) {
                     if ((startBinFraction >= 0.5) && (endBinFraction >= 0.5)) // both points left of bin center
                     {
-                      startTTimes_.at(index) = startTTimes_.at(index) - gridResolution_; // shift EV1_ to previous gridpoint
+                      startPointReceiveTime_ = startPointReceiveTime_ - gridResolution_; // shift EV1_ to previous gridpoint
                     }
                     else if ((startBinFraction < 0.5) && (endBinFraction < 0.5)) // both points right of bin center
                     {
-                      endTTimes_.at(index) = endTTimes_.at(index) + gridResolution_; // shift EV2_ to next gridpoint
+                      endPointReceiveTime_ = endPointReceiveTime_ + gridResolution_; // shift EV2_ to next gridpoint
                     }
                     else // points on both sides of bin center
                     {
@@ -222,11 +180,11 @@ namespace corsika {
                       // check if asymmetry to right or left
                       if (rightDist >= leftDist)
                       {
-                        endTTimes_.at(index) = endTTimes_.at(index) + gridResolution_; // shift EV2_ to next gridpoint
+                        endPointReceiveTime_ = endPointReceiveTime_ + gridResolution_; // shift EV2_ to next gridpoint
                       }
                       else
                       {
-                        startTTimes_.at(index) = startTTimes_.at(index) - gridResolution_; // shift EV1_ to previous gridpoint
+                        startPointReceiveTime_ = startPointReceiveTime_ - gridResolution_; // shift EV1_ to previous gridpoint
                       }
                     }
                   }
@@ -234,11 +192,11 @@ namespace corsika {
                   {
                     if ((startBinFraction >= 0.5) && (endBinFraction >= 0.5)) // both points left of bin center
                     {
-                      endTTimes_.at(index) = endTTimes_.at(index) - gridResolution_; // shift EV2_ to previous gridpoint
+                      endPointReceiveTime_ = endPointReceiveTime_ - gridResolution_; // shift EV2_ to previous gridpoint
                     }
                     else if ((startBinFraction < 0.5) && (endBinFraction < 0.5)) // both points right of bin center
                     {
-                      startTTimes_.at(index) = startTTimes_.at(index) + gridResolution_; // shift EV1_ to next gridpoint
+                      startPointReceiveTime_ = startPointReceiveTime_ + gridResolution_; // shift EV1_ to next gridpoint
                     }
                     else // points on both sides of bin center
                     {
@@ -247,20 +205,20 @@ namespace corsika {
                       // check if asymmetry to right or left
                       if (rightDist >= leftDist)
                       {
-                        startTTimes_.at(index) = startTTimes_.at(index) + gridResolution_; // shift EV1_ to next gridpoint
+                        startPointReceiveTime_ = startPointReceiveTime_ + gridResolution_; // shift EV1_ to next gridpoint
                       }
                       else
                       {
-                        endTTimes_.at(index) = endTTimes_.at(index) - gridResolution_; // shift EV2_ to previous gridpoint
+                        endPointReceiveTime_ = endPointReceiveTime_ - gridResolution_; // shift EV2_ to previous gridpoint
                       }
                     }
                   } // End of else statement
                 } // End of if for startbin == endbin
               } // End of if deltaT < gridresolution
-            } // End of checking for very small doppler factors
+            } // End of if that checks small doppler factors
 
             // perform ZHS-like calculation close to Cherenkov angle
-            if (std::fabs(preDoppler__) <= approxThreshold_ || std::fabs(postDoppler.at(index)) <= approxThreshold_) {
+            if (std::fabs(preDoppler_) <= approxThreshold_ || std::fabs(postDoppler_) <= approxThreshold_) {
 
               // get global simulation time for the middle point of that track. (This is my best guess for now)
               auto midTime_{particle.getTime() - (track.getDuration() / 2)};
@@ -272,56 +230,50 @@ namespace corsika {
               // This is a SignalPathCollection
               auto paths3{this->propagator_.propagate(midPoint_, antenna.getLocation(), 1_m)};
 
-//               std::size_t j_index {0}; // this will be useful for multiple paths (aka curved propagators)
               // now loop over the paths for endpoint that we got above
               for (auto const& path : paths3) {
 
-//                 EVstart_.erase(EVstart_.begin() + index + j_index); // this should work for curved + curved propagators
-//                 EVend_.erase(EVend_.begin() + index + j_index); // for now just use one index and not j_index since at the moment you are working with StraightPropagator
-
                 auto const midPointReceiveTime_{path.total_time_ + midTime_};
                 auto midDoppler_{1. - path.average_refractive_index_ * beta_.dot(path.emit_)};
 
                 // change the values of the receive unit vectors of start and end
-                ReceiveVectorsStart_.at(index) = path.receive_;
-                ReceiveVectorsEnd_.at(index) = path.receive_;
+                ReceiveVectorStart_ = path.receive_;
+                ReceiveVectorEnd_ = path.receive_;
 
                 // CoREAS calculation -> get ElectricFieldVector3 for "midPoint"
                 ElectricFieldVector EVmid_ =
-                                             path.receive_.cross(path.receive_.cross(beta_)).getComponents() /
-                                             (path.R_distance_ * midDoppler_) * (1 / (4 * M_PI * track.getDuration())) * ((1 / constants::epsilonZero) * (1 / constants::c)) * charge_;
+                    path.receive_.cross(path.receive_.cross(beta_)).getComponents() /
+                    (path.R_distance_ * midDoppler_) * (1 / (4 * M_PI * track.getDuration())) * ((1 / constants::epsilonZero) * (1 / constants::c)) * charge_;
 
-//                 EVstart_.insert(EVstart_.begin() + index + j_index, EVmid_); // this should work for curved + curved propagators
-//                 EVend_.insert(EVend_.begin() + index + j_index, - EVmid_); // for now just use one index and not j_index since at the moment you are working with StraightPropagator
-                EVstart_.at(index) = EVmid_;
-                EVend_.at(index) = - EVmid_;
+                EV1_ = EVmid_;
+                EV2_= - EVmid_;
 
                 auto deltaT_{(endPoint_ - startPoint_).getNorm() / (constants::c * beta_.getNorm() * std::fabs(midDoppler_))}; // TODO: Caution with this!
 
-                if (startTTimes_.at(index) < endTTimes_.at(index)) // EVstart_ arrives earlier
+                if (startPointReceiveTime_ < endPointReceiveTime_) // EVstart_ arrives earlier
                 {
-                  startTTimes_.at(index) = midPointReceiveTime_ - 0.5 * deltaT_;
-                  endTTimes_.at(index) = midPointReceiveTime_ + 0.5 * deltaT_;
+                  startPointReceiveTime_ = midPointReceiveTime_ - 0.5 * deltaT_;
+                  endPointReceiveTime_ = midPointReceiveTime_ + 0.5 * deltaT_;
                 }
                 else // EVend_ arrives earlier
                 {
-                  startTTimes_.at(index) = midPointReceiveTime_ + 0.5 * deltaT_;
-                  endTTimes_.at(index) = midPointReceiveTime_ - 0.5 * deltaT_;
+                  startPointReceiveTime_ = midPointReceiveTime_ + 0.5 * deltaT_;
+                  endPointReceiveTime_ = midPointReceiveTime_ - 0.5 * deltaT_;
                 }
 
                 const long double gridResolution_{antenna.duration_ / 1_s};
-                deltaT_ = endTTimes_.at(index) - startTTimes_.at(index);
+                deltaT_ = endPointReceiveTime_ - startPointReceiveTime_;
 
                 // redistribute contributions over time scale defined by the observation time resolution
                 if (std::fabs(deltaT_ / 1_s) < gridResolution_) {
 
-                  EVstart_.at(index) = EVstart_.at(index) * std::fabs((deltaT_ / 1_s) / gridResolution_);
-                  EVend_.at(index) = EVend_.at(index) * std::fabs((deltaT_ / 1_s) / gridResolution_);
+                  EV1_ = EV1_ * std::fabs((deltaT_ / 1_s) / gridResolution_);
+                  EV2_ = EV2_ * std::fabs((deltaT_ / 1_s) / gridResolution_);
 
-                  const long startBin = static_cast<long>(std::floor((startTTimes_.at(index) / 1_s)/gridResolution_+0.5l));
-                  const long endBin = static_cast<long>(std::floor((endTTimes_.at(index) / 1_s) /gridResolution_+0.5l));
-                  const double startBinFraction = ((startTTimes_.at(index) / 1_s)/gridResolution_)-std::floor((startTTimes_.at(index) / 1_s)/gridResolution_);
-                  const double endBinFraction = ((endTTimes_.at(index) / 1_s)/gridResolution_)-std::floor((endTTimes_.at(index) / 1_s)/gridResolution_);
+                  const long startBin = static_cast<long>(std::floor((startPointReceiveTime_ / 1_s)/gridResolution_+0.5l));
+                  const long endBin = static_cast<long>(std::floor((endPointReceiveTime_ / 1_s) /gridResolution_+0.5l));
+                  const double startBinFraction = ((startPointReceiveTime_ / 1_s)/gridResolution_)-std::floor((startPointReceiveTime_ / 1_s)/gridResolution_);
+                  const double endBinFraction = ((endPointReceiveTime_ / 1_s)/gridResolution_)-std::floor((endPointReceiveTime_ / 1_s)/gridResolution_);
 
                   // only do timing modification if contributions would land in same bin
                   if (startBin == endBin) {
@@ -330,11 +282,11 @@ namespace corsika {
                     if ((deltaT_ / 1_s) >= 0) {
                       if ((startBinFraction >= 0.5) && (endBinFraction >= 0.5)) // both points left of bin center
                       {
-                        startTTimes_.at(index) = startTTimes_.at(index) - gridResolution_ * 1_s; // shift EV1_ to previous gridpoint
+                        startPointReceiveTime_ = startPointReceiveTime_ - gridResolution_ * 1_s; // shift EV1_ to previous gridpoint
                       }
                       else if ((startBinFraction < 0.5) && (endBinFraction < 0.5)) // both points right of bin center
                       {
-                        endTTimes_.at(index) = endTTimes_.at(index) + gridResolution_ * 1_s; // shift EV2_ to next gridpoint
+                        endPointReceiveTime_ = endPointReceiveTime_ + gridResolution_ * 1_s; // shift EV2_ to next gridpoint
                       }
                       else // points on both sides of bin center
                       {
@@ -343,11 +295,11 @@ namespace corsika {
                         // check if asymmetry to right or left
                         if (rightDist >= leftDist)
                         {
-                          endTTimes_.at(index) = endTTimes_.at(index) + gridResolution_ * 1_s; // shift EV2_ to next gridpoint
+                          endPointReceiveTime_ = endPointReceiveTime_ + gridResolution_ * 1_s; // shift EV2_ to next gridpoint
                         }
                         else
                         {
-                          startTTimes_.at(index) = startTTimes_.at(index) - gridResolution_ * 1_s; // shift EV1_ to previous gridpoint
+                          startPointReceiveTime_ = startPointReceiveTime_ - gridResolution_ * 1_s; // shift EV1_ to previous gridpoint
                         }
                       }
                     }
@@ -355,11 +307,11 @@ namespace corsika {
                     {
                       if ((startBinFraction >= 0.5) && (endBinFraction >= 0.5)) // both points left of bin center
                       {
-                        endTTimes_.at(index) = endTTimes_.at(index) - gridResolution_ * 1_s; // shift EV2_ to previous gridpoint
+                        endPointReceiveTime_ = endPointReceiveTime_ - gridResolution_ * 1_s; // shift EV2_ to previous gridpoint
                       }
                       else if ((startBinFraction < 0.5) && (endBinFraction < 0.5)) // both points right of bin center
                       {
-                        startTTimes_.at(index) = startTTimes_.at(index) + gridResolution_ * 1_s; // shift EV1_ to next gridpoint
+                        startPointReceiveTime_ = startPointReceiveTime_ + gridResolution_ * 1_s; // shift EV1_ to next gridpoint
                       }
                       else // points on both sides of bin center
                       {
@@ -368,11 +320,11 @@ namespace corsika {
                         // check if asymmetry to right or left
                         if (rightDist >= leftDist)
                         {
-                          startTTimes_.at(index) = startTTimes_.at(index) + gridResolution_ * 1_s; // shift EV1_ to next gridpoint
+                          startPointReceiveTime_ = startPointReceiveTime_ + gridResolution_ * 1_s; // shift EV1_ to next gridpoint
                         }
                         else
                         {
-                          endTTimes_.at(index) = endTTimes_.at(index) - gridResolution_ * 1_s; // shift EV2_ to previous gridpoint
+                          endPointReceiveTime_ = endPointReceiveTime_ - gridResolution_ * 1_s; // shift EV2_ to previous gridpoint
                         }
                       }
                     } // End of else statement
@@ -383,25 +335,16 @@ namespace corsika {
 
             } // end of ZHS-like approximation
 
-            // Feed start and end to the antenna
-            std::cout << "LIGO PRIN TO RECEIVE :" << std::endl;
-            std::cout << "startTTimes_.at(index): " << startTTimes_.at(index) << std::endl;
-            std::cout << "endTTimes_.at(index): " << endTTimes_.at(index) << std::endl;
-            antenna.receive(startTTimes_.at(index), ReceiveVectorsStart_.at(index), EVstart_.at(index));
-            antenna.receive(endTTimes_.at(index), ReceiveVectorsEnd_.at(index), EVend_.at(index));
-
-            // update index
-            index = index + 1;
-
-          } // End of for loop for preDoppler factor (this includes checking for postDoppler factors)
-
-          index = 0;
-        } // End of checking of vector sizes
-
-      } // End of looping over the antennas.
-
-    } // End of simulate method.
+            std::cout << "RIGHT BEFORE RECEIVE INCIDENT :" << std::endl;
+            std::cout << "startTTimes_.at(index): " << startPointReceiveTime_ << std::endl;
+            std::cout << "endTTimes_.at(index): " << endPointReceiveTime_ << std::endl;
+            antenna.receive(startPointReceiveTime_, ReceiveVectorStart_, EV1_);
+            antenna.receive(endPointReceiveTime_, ReceiveVectorEnd_, EV2_);
 
+          } // End of loop over both paths to get signal info
+        } // End of checking that we have the same number of paths
+      } // End of looping over antennas
+    } // End of simulate method
 
     /**
      * Return the maximum step length for this particle and track.
@@ -429,4 +372,4 @@ namespace corsika {
 
   }; // END: class RadioProcess
 
-} // namespace corsika
+} // namespace corsika
\ No newline at end of file