diff --git a/scripts/HTN/Trees/Red/ConvoyUnit.xml b/scripts/HTN/Trees/Red/ConvoyUnit.xml
index d6d5618c964f81f3dd0a6c14caa5a32cdb05abaf..cb252b7e83c1740904cc4f4239c332261867b62b 100644
--- a/scripts/HTN/Trees/Red/ConvoyUnit.xml
+++ b/scripts/HTN/Trees/Red/ConvoyUnit.xml
@@ -21,7 +21,6 @@
 #
 #borg.redUnitStatus[state.getCurrentUnitName()] = 0
 #
-
 </Code>
       <Import />
     </HTNNode>
@@ -86,6 +85,7 @@ borg.redUnitStatus[state.getCurrentUnitName()] = 0
         <HTNNode AllowMsg="true" Name="moveToPoint" Type="INTERRUPT">
           <Parent>printGoalTrackerEvent</Parent>
           <Code IsFile="false">from HTNBehaviors import CreateNetworkMove
+from HTNBehaviors import SetRedUnitActivity
 
 
 params = state.getLastTriggerParams()[0]
@@ -118,7 +118,8 @@ printMessage("Starting move: "+str(wps)+" Spd: "+str(randSpd), True)
 #####################################################
 # set activity to log
 if _gt_activeNode.getVar("moveReason") == "CONVOY":
-    borg.redUnitActivity[state.getCurrentUnitName()]="MOVE_TO_DEPLOYMENT_SITE"
+    #    borg.redUnitActivity[state.getCurrentUnitName()]="MOVE_TO_DEPLOYMENT_SITE"
+    SetRedUnitActivity(state.getCurrentUnitName(), "MOVE_TO_DEPLOYMENT_SITE")
 </Code>
           <Import />
         </HTNNode>
@@ -142,6 +143,8 @@ if len(borg.redConvoysWaiting[state.getCurrentUnit().getName()])==0:
     moveDestination = _gt_activeNode.getVar("moveDestination")
     printMessage("MOVE WAS COMPLETED "+moveReason+" "+moveDestination, True)
 
+    
+
     if moveReason == "ASSEMBLE":
         # let the unit know TODO: THis should probably come from the RFC
 
@@ -176,6 +179,7 @@ if len(borg.redConvoysWaiting[state.getCurrentUnit().getName()])==0:
 from java.util import ArrayList
 from HTNBehaviors import CreateBasicMove
 from HTNBehaviors import ConvertToJavaList
+from HTNBehaviors import SetRedUnitActivity
 
 printMessage("Starting convoy setup", True)
 
@@ -201,7 +205,8 @@ printMessage("Convoy setup for "+str(borg.formationsByName[formName].size()/2)+"
 
 #####################################################
 # set activity to log
-borg.redUnitActivity[state.getCurrentUnitName()]="DEPLOY_AT_SITE"
+#borg.redUnitActivity[state.getCurrentUnitName()]="DEPLOY_AT_SITE"
+SetRedUnitActivity(state.getCurrentUnitName(), "DEPLOY_AT_SITE")
 </Code>
           <Import />
         </HTNNode>
@@ -216,6 +221,7 @@ borg.redUnitActivity[state.getCurrentUnitName()]="DEPLOY_AT_SITE"
           <Parent>printGoalTrackerEvent</Parent>
           <Code IsFile="false">import cxxi.model.behavior.PythonUtilities as PythonUtilities
 from HTNBehaviors import SendEntityEventDelay
+from HTNBehaviors import SetRedUnitActivity
 
 borg.redUnitStatus[state.getCurrentUnitName()] = borg.redUnitStatus[state.getCurrentUnitName()] + 1
 setupNum = _gt_activeNode.getVar("setupNum")
@@ -244,8 +250,8 @@ if borg.redUnitStatus[state.getCurrentUnitName()]==setupNum:
 
     #####################################################
     # set activity to log
-    borg.redUnitActivity[state.getCurrentUnitName()]="OPERATE_AT_SITE"
-
+    #borg.redUnitActivity[state.getCurrentUnitName()]="OPERATE_AT_SITE"
+    SetRedUnitActivity(state.getCurrentUnitName(), "OPERATE_AT_SITE")
 </Code>
           <Import />
         </HTNNode>
@@ -260,6 +266,7 @@ if borg.redUnitStatus[state.getCurrentUnitName()]==setupNum:
           <Parent>isGoalTracker_ConvoyPackUp</Parent>
           <Code IsFile="false">import cxxi.model.behavior.PythonUtilities as PythonUtilities
 from HTNBehaviors import SendEntityEventDelay
+from HTNBehaviors import SetRedUnitActivity
 
 # commander name
 cmdName=""
@@ -274,7 +281,8 @@ borg.delay=0
 
 #####################################################
 # set activity to log
-borg.redUnitActivity[state.getCurrentUnitName()]="PACK_UP_AT_SITE"
+#borg.redUnitActivity[state.getCurrentUnitName()]="PACK_UP_AT_SITE"
+SetRedUnitActivity(state.getCurrentUnitName(), "PACK_UP_AT_SITE")
 </Code>
           <Import />
         </HTNNode>
@@ -305,7 +313,9 @@ borg.delay=0
         <Import />
         <HTNNode AllowMsg="true" Name="convoyReturn" Type="INTERRUPT">
           <Parent>isGoalTracker_ConvoyReturn</Parent>
-          <Code IsFile="false">printMessage("Need to return", True)
+          <Code IsFile="false">from HTNBehaviors import SetRedUnitActivity
+
+printMessage("Need to return", True)
 
 # TODO: This should probably use the moveToPoint methods
 
@@ -332,8 +342,8 @@ printMessage("Returning", True)
 
 #####################################################
 # set activity to log
-borg.redUnitActivity[state.getCurrentUnitName()]="RETURN_TO_GARRISON"
-</Code>
+#borg.redUnitActivity[state.getCurrentUnitName()]="RETURN_TO_GARRISON"
+SetRedUnitActivity(state.getCurrentUnitName(), "RETURN_TO_GARRISON")</Code>
           <Import />
         </HTNNode>
       </HTNNode>
@@ -347,6 +357,7 @@ borg.redUnitActivity[state.getCurrentUnitName()]="RETURN_TO_GARRISON"
           <Parent>New Node</Parent>
           <Code IsFile="false">import cxxi.model.behavior.PythonUtilities as PythonUtilities
 from HTNBehaviors import SendEntityEventDelay
+from HTNBehaviors import SetRedUnitActivity
 
 borg.redUnitStatus[state.getCurrentUnitName()] = borg.redUnitStatus[state.getCurrentUnitName()] + 1
 #setupNum = _gt_activeNode.getVar("setupNum")
@@ -358,7 +369,8 @@ if borg.redUnitStatus[state.getCurrentUnitName()]==state.getCurrentUnit().getMem
     
     #####################################################
     # set activity to log
-    borg.redUnitActivity[state.getCurrentUnitName()] = None
+    #borg.redUnitActivity[state.getCurrentUnitName()] = None
+    SetRedUnitActivity(state.getCurrentUnitName(), None)
 </Code>
           <Import />
         </HTNNode>
diff --git a/scripts/HTN/Trees/Red/EntityLogger.xml b/scripts/HTN/Trees/Red/EntityLogger.xml
index bfc3812d3736a713bfc70a485bf7adb7ce16c921..8de59af75f94adb6924400cfcb6fb6079044c7ab 100644
--- a/scripts/HTN/Trees/Red/EntityLogger.xml
+++ b/scripts/HTN/Trees/Red/EntityLogger.xml
@@ -74,11 +74,14 @@ if currentActivity == None:
 loc = state.getCurrentLocation()
 heading = state.getCurrentHeading().getHeadingInDegrees()
 
+isTransmitting = IsTransmitting(state.getCurrentUnitName(), state.isCommander())
+
+
 LogGenericMsg.logMsg(
    "EntityActivityLogger", 
-   "ID\tProfile\tLat\tLon\tEle\tSpeed\tHeading\Activity", 
+   "ID\tProfile\tLat\tLon\tEle\tSpeed\tHeading\tActivity\tTransmitting", 
    info.getMySelf(), 
-   [str(info.getMySelf().getID()), info.getMyProfile().getName(), str(loc.getLatitude()), str(loc.getLongitude()), str(loc.getElevation()), str(state.getCurrentSpeed()), str(heading), currentActivity])
+   [str(info.getMySelf().getID()), info.getMyProfile().getName(), str(loc.getLatitude()), str(loc.getLongitude()), str(loc.getElevation()), str(state.getCurrentSpeed()), str(heading), currentActivity, str(isTransmitting)])
 #printMessage("TEST LOG", True)
 
 SendEntityEventDelay(info.getMyAssignedName(), "GoalTracker_LogInfo", [], borg.redLoggerInterval)
diff --git a/scripts/HTN/Trees/Red/RadarTree.xml b/scripts/HTN/Trees/Red/RadarTree.xml
index 353335011b62e1f92424c189d1a16e276be29589..5a42c12fd5538015efb4b9ebb32bfe542ab9d77e 100644
--- a/scripts/HTN/Trees/Red/RadarTree.xml
+++ b/scripts/HTN/Trees/Red/RadarTree.xml
@@ -12,11 +12,14 @@
     <Import />
     <HTNNode AllowMsg="true" Name="createData" Type="DEFAULT">
       <Parent>addReplanTriggers</Parent>
-      <Code IsFile="false">profileName = info.getMyProfile().getName()
+      <Code IsFile="false">from HTNBehaviors import SetRedUnitActivity
+
+profileName = info.getMyProfile().getName()
 printMessage("Radar started for "+profileName, True) # desc string, append name True/False
 
 if "NEBO" in profileName:
-    borg.redUnitActivity[state.getCurrentUnitName()]="EMITTING-EWR"
+    #borg.redUnitActivity[state.getCurrentUnitName()]="EMITTING-EWR"
+    SetRedUnitActivity(state.getCurrentUnitName(), "EMITTING-EWR")
 </Code>
       <Import />
     </HTNNode>
@@ -85,7 +88,9 @@ printMessage("Radar start "+info.getMyProfile().getName()+": "+str(totalTime)+"
         <Import />
         <HTNNode AllowMsg="false" Name="radarOn" Type="INTERRUPT">
           <Parent>New Node</Parent>
-          <Code IsFile="false">#####################################################
+          <Code IsFile="false">from HTNBehaviors import SetRedEntityActivityOverride
+
+#####################################################
 # set activity to log
 
 profileName = info.getMyProfile().getName()
@@ -97,7 +102,9 @@ elif profileName == "TARGET_ACQ_RADAR":
 else:
     suffixName = "EWR"
 
-borg.redEntityActivityOverride[info.getMyAssignedName()]="EMITTING-"+suffixName
+#borg.redEntityActivityOverride[info.getMyAssignedName()]="EMITTING-"+suffixName
+SetRedEntityActivityOverride(info.getMyAssignedName(), "EMITTING-"+suffixName)
+
 printMessage("Radar on", True) # desc string, append name True/False
 </Code>
           <Import />
@@ -111,9 +118,12 @@ printMessage("Radar on", True) # desc string, append name True/False
         <Import />
         <HTNNode AllowMsg="false" Name="radarOff" Type="INTERRUPT">
           <Parent>New Node</Parent>
-          <Code IsFile="false">#####################################################
+          <Code IsFile="false">from HTNBehaviors import SetRedEntityActivityOverride
+
+#####################################################
 # set activity to log
-del borg.redEntityActivityOverride[info.getMyAssignedName()]
+#del borg.redEntityActivityOverride[info.getMyAssignedName()]
+SetRedEntityActivityOverride(info.getMyAssignedName(), None)
 printMessage("Radar off", True) # desc string, append name True/False
 </Code>
           <Import />
diff --git a/scripts/HTN/Trees/Red/RadioTree.xml b/scripts/HTN/Trees/Red/RadioTree.xml
new file mode 100644
index 0000000000000000000000000000000000000000..40bc7181d859413bd1e4a4887f86b5ee07b4ef61
--- /dev/null
+++ b/scripts/HTN/Trees/Red/RadioTree.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<HTNNode AllowMsg="true" Name="RadioTree" Type="DEFAULT">
+  <Parent>null</Parent>
+  <Code IsFile="false" />
+  <Import />
+  <HTNNode AllowMsg="true" Name="initInfo" Type="DEFAULT">
+    <Parent>BasicTree</Parent>
+    <Code IsFile="false">if _gt_activeNode.getVar("isInited") == None:
+	_gt_activeNode.putVar("isInited", 1)
+	_htn_precon_ret=1
+</Code>
+    <Import />
+    <HTNNode AllowMsg="true" Name="initTransmittingFlag" Type="DEFAULT">
+      <Parent>addReplanTriggers</Parent>
+      <Code IsFile="false"># set the transmission time in seconds
+_gt_activeNode.putVar("transmitTime", 10)
+# is transmitting flag
+_gt_activeNode.putVar("isTransmitting", False)
+# is communicating
+_gt_activeNode.putVar("isCommunicating", False)
+
+</Code>
+      <Import />
+    </HTNNode>
+    <HTNNode AllowMsg="true" Name="addReplanTriggers" Type="INTERRUPT">
+      <Parent>initInfo</Parent>
+      <Code IsFile="false"># model events
+#goalContainer.getCurrentExecutingStack().addReplanTrigger("ModelEvent")
+
+# goal tracker events
+#goalContainer.getCurrentExecutingStack().addReplanTrigger("GoalTracker_Event")
+goalContainer.getCurrentExecutingStack().addReplanTrigger("GoalTracker_StartRadioCheckIn")
+goalContainer.getCurrentExecutingStack().addReplanTrigger("GoalTracker_StopRadioCheckIn")
+</Code>
+      <Import />
+    </HTNNode>
+  </HTNNode>
+  <HTNNode AllowMsg="true" Name="events" Type="DEFAULT">
+    <Parent>BasicTree</Parent>
+    <Code IsFile="false" />
+    <Import />
+    <HTNNode AllowMsg="true" Name="isGoalTrackerEvent" Type="DEFAULT">
+      <Parent>events</Parent>
+      <Code IsFile="false">if state.getLastTrigger().startswith("doGoalTracker_"):
+	_htn_precon_ret=1
+</Code>
+      <Import />
+      <HTNNode AllowMsg="true" Name="isGoalTracker_StartRadioCheckIn" Type="DEFAULT">
+        <Parent>printGoalTrackerEvent</Parent>
+        <Code IsFile="false">if state.getLastTrigger().startswith("doGoalTracker_StartRadioCheckIn"):
+	_htn_precon_ret=1
+</Code>
+        <Import />
+        <HTNNode AllowMsg="true" Name="setTransmitFlag" Type="INTERRUPT">
+          <Parent>isGoalTracker_LogInfo</Parent>
+          <Code IsFile="false">
+#isCommunicating = _gt_activeNode.getVar(")
+
+# flip the flag
+_gt_activeNode.putVar("isTransmitting", True)
+transmitTime = _gt_activeNode.getVar("transmitTime")
+
+SendEntityEventDelay(info.getMyAssignedName(), "GoalTracker_StopRadioCheckIn", [], transmitTime)
+</Code>
+          <Import />
+        </HTNNode>
+      </HTNNode>
+      <HTNNode AllowMsg="true" Name="isGoalTracker_StopRadioCheckIn" Type="DEFAULT">
+        <Parent>printGoalTrackerEvent</Parent>
+        <Code IsFile="false">if state.getLastTrigger().startswith("doGoalTracker_StopRadioCheckIn"):
+	_htn_precon_ret=1
+</Code>
+        <Import />
+        <HTNNode AllowMsg="true" Name="clearTransmitFlag" Type="INTERRUPT">
+          <Parent>isGoalTracker_LogInfo</Parent>
+          <Code IsFile="false"># flip the flag
+_gt_activeNode.putVar("isTransmitting", False)
+</Code>
+          <Import />
+        </HTNNode>
+      </HTNNode>
+      <HTNNode AllowMsg="true" Name="printGoalTrackerEvent" Type="INTERRUPT">
+        <Parent>isGoalTrackerEvent</Parent>
+        <Code IsFile="false">printMessage("GOAL TRACKER EVENT"+state.getLastTrigger(), True)
+</Code>
+        <Import />
+      </HTNNode>
+    </HTNNode>
+    <HTNNode AllowMsg="true" Name="modelEvents" Type="DEFAULT">
+      <Parent>events</Parent>
+      <Code IsFile="false" />
+      <Import />
+      <HTNNode AllowMsg="true" Name="printEvent" Type="INTERRUPT">
+        <Parent>modelEvents</Parent>
+        <Code IsFile="false">printMessage("EVENT"+state.getLastTrigger(), True)</Code>
+        <Import />
+      </HTNNode>
+    </HTNNode>
+  </HTNNode>
+</HTNNode>
\ No newline at end of file
diff --git a/scripts/HTN/Trees/Red/RandomMove.xml b/scripts/HTN/Trees/Red/RandomMove.xml
index 8edb793e69ba08b16580b2fc6a689b4ee76b6574..183cee7846171ed8f7bc7cec4a0110964999c038 100644
--- a/scripts/HTN/Trees/Red/RandomMove.xml
+++ b/scripts/HTN/Trees/Red/RandomMove.xml
@@ -14,6 +14,7 @@
       <Parent>initInfo</Parent>
       <Code IsFile="false">from HTNBehaviors import SendEntityEventDelay
 from HTNBehaviors import GetRandomPoint
+from HTNBehaviors import SetRedUnitActivity
 import cxxi.model.behavior.PythonUtilities as PythonUtilities
 import math
 
@@ -33,7 +34,8 @@ printMessage("Create Data for Random Move", True)
 
 #####################################################
 # set activity to log
-borg.redUnitActivity[state.getCurrentUnitName()]="RANDOM-MOVE"
+#borg.redUnitActivity[state.getCurrentUnitName()]="RANDOM-MOVE"
+SetRedUnitActivity(state.getCurrentUnitName(), "RANDOM-MOVE")
 </Code>
       <Import />
     </HTNNode>
diff --git a/scripts/HTN/Trees/Red/RedForceCoordinator.xml b/scripts/HTN/Trees/Red/RedForceCoordinator.xml
index c7bd0492de197bd612cab89c4cd0ac036fda986e..dc2d19b010c7acdc88fe421472f92ab4c66b9de9 100644
--- a/scripts/HTN/Trees/Red/RedForceCoordinator.xml
+++ b/scripts/HTN/Trees/Red/RedForceCoordinator.xml
@@ -20,6 +20,7 @@ borg.redUnitStatus=dict()
 
 # for logging
 borg.redUnitActivity=dict()
+borg.redUnitActivityTime=dict()
 borg.redEntityActivityOverride=dict()
 
 borg.redDestinations=["PATH_DEST1", "PATH_DEST2","PATH_DEST3","PATH_DEST4","PATH_DEST5","PATH_DEST6","PATH_DEST7","PATH_DEST8","PATH_DEST9"]
diff --git a/scripts/HTNBehaviors.py b/scripts/HTNBehaviors.py
index c7e1aadf54eb0506433103745410ba6397cd3bbe..f5bd2c5a290706e2b5e91235f7d4063dc62b0b81 100644
--- a/scripts/HTNBehaviors.py
+++ b/scripts/HTNBehaviors.py
@@ -6,6 +6,8 @@ import cxxi.model.behavior.OrderUtilities as OrderUtilities
 import mtry.cxxi.model.HierarchicalTaskNetwork.GoalContainer as GoalContainer
 import cxxi.model.behavior.PythonUtilities as PythonUtilities
 
+import simkit.Schedule as Schedule
+
 #from UtilityFuncsExp import HTNBorg as borg
 
 __HTN_PATH__ = "HTN/Trees/"
@@ -14,6 +16,36 @@ __NETWORK_MOVE_PATH__ = "HTN/Trees/NetworkMove.xml"
 
 borg = None
 
+def IsTransmitting(unitName, isCommander):
+    _InitBorgInternal()
+
+    # is transmitting
+    activityName = borg.redUnitActivity[unitName]
+    activityTime = int(borg.redUnitActivityTime[unitName])
+    elapsedTime = int(Schedule.getSimTime()) - activityTime
+    
+    if activityName == "MOVE_TO_DEPLOYMENT_SITE" and not isCommander and (elapsedTime >= 300 and elapsedTime <= 310):
+        return True
+    elif activityName == "OPERATE_AT_SITE" and isCommander (elapsedTime >= 3600 and elapsedTime <= 3610):
+        return True
+    else
+        return False
+
+def SetRedUnitActivity(unitName, activityName):
+    _InitBorgInternal()
+
+    borg.redUnitActivity[unitName]=activityName
+    borg.redUnitActivityTime[unitName]=Schedule.getSimTime()
+
+def SetRedEntityActivityOverride(entityName, activityName):
+    _InitBorgInternal()
+
+    if activityName != None:
+        borg.redEntityActivityOverride[entityName]=activityName
+        borg.redEntityActivityOverride[entityName]=Schedule.getSimTime()
+    else:
+        del borg.redEntityActivityOverride[entityName]
+
 # Reads from a list of allWPs
 def GetRandomPoint():
     _InitBorgInternal()
@@ -35,8 +67,6 @@ def _InitBorgInternal():
         exec(impStr)
         borg = HTNBorg()
         print "Borg created"
-    else:
-        print "Borg already created"
 
 def TestBorg():
     _InitBorgInternal()