+ /**
+ * Keep track of execution time.
+ *
+ * <p>This method keeps track of timing statistics for each subsystem.</p>
+ *
+ * @param time execution time in ms of last call.
+ */
+ void updateExecutionTime(double time);
+
+ /**
+ * Print details of execution time.
+ *
+ * <p>For debugging purposes, developers can place stamp() calls
+ * at strategic points in the update() function of each subsystem, which
+ * record the time between the successive calls to stamp. This method,
+ * printExecutionTime() is called after exectution of the subsystem
+ * update function itself to conduct a post-hoc analysis of excecution
+ * time</p>
+ */
+ void printTimingInformation();
+
+ /**
+ * Place time stamps at strategic points in the execution of subsystems
+ * update() member functions. Predominantly for debugging purposes.
+ */
+ void stamp(const string& name);
+
+
+