diff --git a/build/includes/global/timing_info.hpp b/build/includes/global/timing_info.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..2b0c9fa434d38622fb49b6dd8600792a4cfd009c
--- /dev/null
+++ b/build/includes/global/timing_info.hpp
@@ -0,0 +1,23 @@
+#pragma once
+#include <chrono>
+#include <optional>
+#include <vector>
+
+
+
+using chrono_time = std::chrono::time_point<std::chrono::system_clock>;
+
+class TimingInfo {
+    private:
+        std::vector<std::optional<chrono_time>> start;
+        std::vector<std::optional<chrono_time>> end;
+        std::vector<std::optional<std::string>> name_of_time_point; // the name you want for the time point (ie. reading, writing, duration)
+        int num_time_points;
+
+    public:
+        TimingInfo();
+        ~TimingInfo();
+        void addTimePoint(std::string time_point_name);
+        void updateTimePoint(std::string time_point_name);
+
+};
\ No newline at end of file
diff --git a/build/includes/summa_actor/summa_actor.hpp b/build/includes/summa_actor/summa_actor.hpp
index 3d08d25a0073f3c720a2be1b78f5d7f8ebff9d3e..a2e941009aa451f65645765f100ab644bd022b1c 100644
--- a/build/includes/summa_actor/summa_actor.hpp
+++ b/build/includes/summa_actor/summa_actor.hpp
@@ -8,8 +8,16 @@
 
 namespace caf {
 
+
+struct summa_actor_timing_info {
+    std::chrono::time_point<std::chrono::system_clock> start;
+    std::chrono::time_point<std::chrono::system_clock> end;
+    double summa_actor_duration;
+
+};
+
 struct summa_actor_state {
-    // Timing Information
+    // Timing Information For Summa-Actor
     std::chrono::time_point<std::chrono::system_clock> start;
     std::chrono::time_point<std::chrono::system_clock> end;
     double duration;
diff --git a/build/makefile b/build/makefile
index 6f1d8a672d6a9b5456ec1dab533045d070d0bed1..ecffcc652e4d896eaa551309efbb26a9f6728e04 100644
--- a/build/makefile
+++ b/build/makefile
@@ -249,6 +249,7 @@ SOURCE_DIR = /globalhome/kck540/HPC/SummaProjects/Summa-Actors/build/source/acto
 
 GLOBAL_INCLUDES = -I$(INCLUDE_DIR)/global
 GLOBAL = $(SOURCE_DIR)/global/global.cpp
+TIMEINFO = $(SOURCE_DIR)/global/timing_info.cpp
 
 SUMMA_ACTOR_INCLUDES = -I$(INCLUDE_DIR)/summa_actor
 SUMMA_ACTOR = $(SOURCE_DIR)/summa_actor/summa_actor.cpp
@@ -321,7 +322,7 @@ clean_fortran:
 ################################################ COMPILE SUMMA-C++ ################################################
 ###################################################################################################################
 compile_globals:
-	$(CC) $(FLAGS_ACTORS) -c $(GLOBAL) $(GLOBAL_INCLUDES)
+	$(CC) $(FLAGS_ACTORS) -c $(GLOBAL) $(TIMEINFO) $(GLOBAL_INCLUDES)
 
 compile_hru_actor:
 	$(CC) $(FLAGS_ACTORS) -c $(HRU_ACTOR) $(HRU_ACTOR_INCLUDES) $(GLOBAL_INCLUDES) $(ACTORS_INCLUDES)
diff --git a/build/source/actors/global/timing_info.cpp b/build/source/actors/global/timing_info.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..034d2a369e13fb17a7b50522a2ed11ad37423e0e
--- /dev/null
+++ b/build/source/actors/global/timing_info.cpp
@@ -0,0 +1,14 @@
+#include "timing_info.hpp"
+
+TimingInfo::TimingInfo() {
+    this->num_time_points = 0;
+}
+
+TimingInfo::~TimingInfo(){}
+
+void TimingInfo::addTimePoint(std::string time_point_name) {
+    this->name_of_time_point.push_back(time_point_name);
+    this->start.push_back({});
+    this->end.push_back({});
+    this->num_time_points++;
+}
\ No newline at end of file
diff --git a/build/source/actors/job_actor/job_actor.cpp b/build/source/actors/job_actor/job_actor.cpp
index 14dc8c3f2eef705ca7ba6eb81ae697dd10fe8592..a33240cde3b0fc707379e86148e7cb7585fb3ac1 100644
--- a/build/source/actors/job_actor/job_actor.cpp
+++ b/build/source/actors/job_actor/job_actor.cpp
@@ -59,20 +59,11 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
     aout(self) << "Job Actor Initalized \n";
 
     return {
-    // *******************************************************************************************
-    // *********************************** INTERFACE WITH HRU ************************************
-    // *******************************************************************************************
-        
-        /**
-         * 
-         */
+
         [=](init_hru) {
             initalizeGRU(self);
         },
 
-        /**
-         * 
-         */
         [=](done_init_hru) {
             if (debug) {
                 aout(self) << "Done Init\n";
@@ -88,7 +79,6 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
             }
         },
 
-
         [=](done_hru, int indxGRU, double totalDuration, double initDuration, 
             double forcingDuration, double runPhysicsDuration, double writeOutputDuration) {
             aout(self) << "GRU:" << self->state.GRUList[indxGRU - 1]->getRefGRU()
@@ -115,7 +105,6 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
             }
         },
 
-
         [=](run_failure, caf::actor actorRef, int indxGRU, int err) {
             aout(self) << "GRU:" << self->state.GRUList[indxGRU - 1]->getRefGRU()
                 << "indxGRU = " << indxGRU << "Failed \n"
@@ -134,23 +123,12 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
             }
         },
 
-    // *******************************************************************************************
-    // ******************************* END INTERFACE WITH HRU ************************************
-    // *******************************************************************************************
-
-    // *******************************************************************************************
-    // ****************************** INTERFACE WITH FileAccessActor *****************************
-    // *******************************************************************************************
-        /**
-         * 
-         */
         [=](done_file_access_actor_init) {
             // Init GRU Actors and the Output Structure
-            // self->send(self->state.file_access_actor, initalize_outputStructure_v);
             self->send(self, init_hru_v);
         },
 
-        [=](file_access_actor_done, double readDuration, double writeDuration) {
+        [=](file_access_actor_done, double read_duration, double write_duration) {
             int err = 0;
             if (debug) {
                 aout(self) << "\n********************************\n";
@@ -178,13 +156,14 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
             aout(self) << "     " << (self->state.duration / 1000) / 60  << " Minutes\n";
             aout(self) << "     " << ((self->state.duration / 1000) / 60) / 60 << " Hours\n";
             aout(self) << "\nReading Duration:\n";
-            aout(self) << "     " << readDuration  << " Seconds\n";
+            aout(self) << "     " << read_duration  << " Seconds\n";
             aout(self) << "\nWriting Duration:\n";
-            aout(self) << "     " << writeDuration << " Seconds\n\n";
+            aout(self) << "     " << write_duration << " Seconds\n\n";
 
             cleanUpJobActor(&err);
             // Tell Parent we are done
-            self->send(self->state.parent, done_job_v, self->state.numGRUFailed);
+            self->send(self->state.parent, done_job_v, self->state.numGRUFailed, self->state.duration,
+                read_duration, write_duration);
             self->quit();
         },
 
diff --git a/build/source/actors/summa_actor/summa_actor.cpp b/build/source/actors/summa_actor/summa_actor.cpp
index 20fcde739d3f2de9c1d484ca0689f2765e169a8d..4aaa11e605004667a62240cd33c81aea81cc203d 100644
--- a/build/source/actors/summa_actor/summa_actor.cpp
+++ b/build/source/actors/summa_actor/summa_actor.cpp
@@ -35,7 +35,7 @@ behavior summa_actor(stateful_actor<summa_actor_state>* self, int startGRU, int
 	spawnJob(self);
 
 	return {
-		[=](done_job, int numFailed) {
+		[=](done_job, int numFailed, int job_duration, int read_duration, int write_duration) {
 			self->state.numFailed += numFailed;
 			aout(self) << "Job Done\n"; 
 			if (self->state.numGRU <= 0) {