diff --git a/src/core/botmodules.rs b/src/core/botmodules.rs
index 68129e1..c113af5 100644
--- a/src/core/botmodules.rs
+++ b/src/core/botmodules.rs
@@ -620,10 +620,10 @@ pub struct Routine {
     pub module : BotModule , // from() can determine this if passed parents_params
     pub channel : Channel , // Requiring some channel context 
     exec_body: bot_actions::actions_util::ExecBody,
-    parent_params : ExecBodyParams ,
+    pub parent_params : ExecBodyParams ,
     pub join_handle : Option<Arc<RwLock<JoinHandle<RoutineAR>>>> , 
     start_time : Option<DateTime<Local>> ,
-    complete_iterations : i64 , 
+    pub complete_iterations : i64 , 
     remaining_iterations : Option<i64> ,
     routine_attr : Vec<RoutineAttr> ,
 }
diff --git a/src/custom/experimental/experiment003.rs b/src/custom/experimental/experiment003.rs
index 1d76930..5537d33 100644
--- a/src/custom/experimental/experiment003.rs
+++ b/src/custom/experimental/experiment003.rs
@@ -89,19 +89,6 @@ async fn test3_body(params : ExecBodyParams) {
 
     async fn rtestbody(params : ExecBodyParams) {
 
-        // let bot = Arc::clone(&params.bot);
-
-        // let botlock = bot.read().await;
-
-        // // uses chat.say_in_reply_to() for the bot controls for messages
-        // botlock
-        // .botmgrs
-        // .chat
-        // .say_in_reply_to(
-        //     &params.msg.clone(), 
-        //     String::from("Inner Routine Loop Message"),
-        //     params.clone()
-        // ).await;
 
         let logmsg_botact = match *params.curr_act.read().await {
             BotAction::C(_) => "command",
@@ -110,20 +97,27 @@ async fn test3_body(params : ExecBodyParams) {
         } ;
 
         botlog::trace(
-            // format!("Params > Curr_act : {:?}", params.curr_act).as_str(), // BotAction doesn't imblement debug
             format!("Params > Curr_act type : {:?}", logmsg_botact).as_str(),
             Some("Experiments003 > test3 command body".to_string()),
             Some(&params.msg),
         );
         Log::flush();
 
-        for _ in 0..5 {
-            println!("tester");
-            sleep(Duration::from_secs_f64(0.5)).await;
+        if let BotAction::R(arr) = &*params.curr_act.read().await {
+            for curriter in 0..5 {
+                println!("tester - Routine - Completed Iterations : {}",
+                    arr.read().await.complete_iterations);
+                println!("tester - Custom Loop - Completed Iterations : {}",
+                curriter);
+                sleep(Duration::from_secs_f64(0.5)).await;
+            }
         }
+        
     }
 
 
+
+
     botlog::debug(
         format!("RTESTBODY : module - {:?} ; channel - {:?}",
             module,channel
@@ -149,7 +143,8 @@ async fn test3_body(params : ExecBodyParams) {
 
         // [ ] before execute , be sure to adjust curr_act
 
-        let mut params_mut = params.clone();
+        // let mut params_mut = params.clone();
+        let mut params_mut = params;
         // let newr_ar = Arc::new(RwLock::new(newr));
         let newr_ar = newr.clone();
 
@@ -163,6 +158,12 @@ async fn test3_body(params : ExecBodyParams) {
         // let mut newr_lock = newr_ar.write().await;
 
         // let rslt = newr_ar.write().await.start().await;
+
+
+        {
+            newr_ar.write().await.parent_params = params_mut.clone();
+        }
+
         let rslt = Routine::start(newr_ar.clone()).await;
 
         // let rslt = newr_ar.read().await.start().await;
@@ -178,12 +179,12 @@ async fn test3_body(params : ExecBodyParams) {
                 rsltstr
                 ).as_str(),
             Some("experiment003 > test3_body".to_string()),
-            Some(&params.msg),
+            Some(&params_mut.msg),
         );
 
         Log::flush();
 
-        let bot = Arc::clone(&params.bot);
+        let bot = Arc::clone(&params_mut.bot);
 
         let botlock = bot.read().await;
 
@@ -192,9 +193,9 @@ async fn test3_body(params : ExecBodyParams) {
         .botmgrs
         .chat
         .say_in_reply_to(
-            &params.msg, 
+            &params_mut.msg, 
             format!("Routine Result : {:?}",rsltstr),
-            params.clone()
+            params_mut.clone()
         ).await;
 
         // [x] Will not be handling JoinHandles here . If immediate abort() handling is required, below is an example that works