diff --git a/01_Code/physical_computing_interface/assembly/app.js b/01_Code/physical_computing_interface/assembly/app.js
index 7b9a4c7061ccb66518265a2db01e5069b72b4e3e..e75dfb60ac7b124a1bb82acba351dd8eb05e0171 100644
--- a/01_Code/physical_computing_interface/assembly/app.js
+++ b/01_Code/physical_computing_interface/assembly/app.js
@@ -190,9 +190,9 @@ document.addEventListener('addNode', function (e) {
 function assembleNode(e,integratedSetup){
 
     var ur10Setup=integratedSetup.ur10Setup;
-    ur10Setup.nodes=[];
-    ur10Setup.edges=[];
-    
+    // ur10Setup.nodes=[];
+    // ur10Setup.edges=[];
+
     var x=e.detail.x;
     var y=e.detail.y;
     var z=e.detail.z;
diff --git a/01_Code/physical_computing_interface/assembly/python-urx/setup.json b/01_Code/physical_computing_interface/assembly/python-urx/setup.json
index 3d426bb52dfc6abb2d264dccb9021e395ba5ff0e..c3e25093af9d2ec4f8ea3f572bd27e70e35a9835 100644
--- a/01_Code/physical_computing_interface/assembly/python-urx/setup.json
+++ b/01_Code/physical_computing_interface/assembly/python-urx/setup.json
@@ -1,7 +1,7 @@
 {
   "setup": {
     "parameters": {
-      "run": true,
+      "run": false,
       "pythonFileName": "ur10test",
       "ipNode": "192.168.1.52",
       "ipEdge": "192.168.1.53",
diff --git a/01_Code/physical_computing_interface/assembly/python-urx/ur10test.py b/01_Code/physical_computing_interface/assembly/python-urx/ur10test.py
index 0dc7288a262f80ca484e8353d774b052d9776d91..880c24e7a4bbdf54f437e45bddf065dce320ff24 100644
--- a/01_Code/physical_computing_interface/assembly/python-urx/ur10test.py
+++ b/01_Code/physical_computing_interface/assembly/python-urx/ur10test.py
@@ -70,7 +70,7 @@ for node in setup["nodes"]:
     a = globalSetup["a1"]
 
     # move to pickup locations from reference
-    roy_trans.pos.z += globalSetup["nodeRelativeDistance"]["z"]
+    roy_trans.pos.z -= globalSetup["nodeRelativeDistance"]["z"]
     roy.set_pose(roy_trans, acc = a, vel = v)
     time.sleep(sleepTime)
 
@@ -78,8 +78,13 @@ for node in setup["nodes"]:
     # close and open grippers
     roy.send_program('set_tool_digital_out(0, True)') #close node tool
     time.sleep(sleepTime1)
-    roy.send_program('set_tool_digital_out(0, False)') #open node tool
-    time.sleep(sleepTime1)
+    # roy.send_program('set_tool_digital_out(0, False)') #open node tool
+    # time.sleep(sleepTime1)
+
+    # move to pickup locations from reference
+    roy_trans.pos.z += globalSetup["nodeRelativeDistance"]["z"]
+    roy.set_pose(roy_trans, acc = a, vel = v)
+    time.sleep(sleepTime)
 
     # move roy (nodes) to programming location from reference, drops to program, then lifts to reference height
     roy_trans.pos.x += globalSetup["programmingRelativeDistance"]["x"]
@@ -92,12 +97,18 @@ for node in setup["nodes"]:
     roy.set_pose(roy_trans, acc = a, vel = v)
 
     # move roy (nodes) to node from reference location
-    roy_trans.pos.x += ((globalSetup["nodeRelativeDistance"]["x"])+node["x"]*latticePitch["x"])
-    roy_trans.pos.y += ((globalSetup["nodeRelativeDistance"]["y"])+node["y"]*latticePitch["y"])
+    roy_trans.pos.x += ((globalSetup["nodeRelativeDistance"]["x"]))+node["x"]*latticePitch["x"]
+    roy_trans.pos.y += ((globalSetup["nodeRelativeDistance"]["y"]))+node["y"]*latticePitch["y"]
     roy.set_pose(roy_trans, acc = a, vel = v)
-    roy_trans.pos.z -= (globalSetup["nodeRelativeDistance"]["z"]-node["z"]*latticePitch["z"])
+    roy_trans.pos.z -= (globalSetup["nodeRelativeDistance"]["z"])-node["z"]*latticePitch["z"]
     roy.set_pose(roy_trans, acc = a, vel = v)
-    roy_trans.pos.z += (globalSetup["nodeRelativeDistance"]["z"]-node["z"]*latticePitch["z"])
+
+
+    roy.send_program('set_tool_digital_out(0, False)') #open node tool
+    time.sleep(sleepTime1)
+
+
+    roy_trans.pos.z += (globalSetup["nodeRelativeDistance"]["z"])-node["z"]*latticePitch["z"]
     time.sleep(sleepTime)
 
 
@@ -122,15 +133,20 @@ for edge in setup["edges"]:
     a = globalSetup["a1"]
 
     # move to pickup locations from reference
-    siegfried_trans.pos.z += globalSetup["edgeRelativeDistance"]["z"]
+    siegfried_trans.pos.z -= globalSetup["edgeRelativeDistance"]["z"]
     siegfried.set_pose(siegfried_trans, acc = a, vel = v)
     time.sleep(sleepTime)
 
     # close and open grippers
     siegfried.send_program('set_tool_digital_out(0, True)') #close strut tool
     time.sleep(sleepTime1)
-    siegfried.send_program('set_tool_digital_out(0, False)') #open strut tool
-    time.sleep(sleepTime1)
+    # siegfried.send_program('set_tool_digital_out(0, False)') #open strut tool
+    # time.sleep(sleepTime1)
+
+    # move to pickup locations from reference
+    siegfried_trans.pos.z += globalSetup["edgeRelativeDistance"]["z"]
+    siegfried.set_pose(siegfried_trans, acc = a, vel = v)
+    time.sleep(sleepTime)
 
   
     # placement location reference (top view)
@@ -144,12 +160,16 @@ for edge in setup["edges"]:
     
     #move siegfried (struts) to S1, then to build level 0.5, from reference location
     if node["rx"]<0.1 : 
-      siegfried_trans.pos.y += ((globalSetup["edgeRelativeDistance"]["y"])+node["y"]*latticePitch["y"])
-      siegfried_trans.pos.x += ((globalSetup["edgeRelativeDistance"]["x"])+node["x"]*latticePitch["x"])
+      siegfried_trans.pos.y += ((globalSetup["edgeRelativeDistance"]["y"]))+node["y"]*latticePitch["y"]
+      siegfried_trans.pos.x += ((globalSetup["edgeRelativeDistance"]["x"]))+node["x"]*latticePitch["x"]
       siegfried.set_pose(siegfried_trans, acc = a, vel = v)
-      siegfried_trans.pos.z -= (globalSetup["edgeRelativeDistance"]["z"]-node["z"]*latticePitch["z"])
+      siegfried_trans.pos.z -= (globalSetup["edgeRelativeDistance"]["z"])-node["z"]*latticePitch["z"]
       siegfried.set_pose(siegfried_trans, acc = a, vel = v)
-      siegfried_trans.pos.z += (globalSetup["edgeRelativeDistance"]["z"]-node["z"]*latticePitch["z"])
+
+      siegfried.send_program('set_tool_digital_out(0, False)') #open strut tool
+      time.sleep(sleepTime1)
+
+      siegfried_trans.pos.z += (globalSetup["edgeRelativeDistance"]["z"])-node["z"]*latticePitch["z"]
     else:
       #move siegfried (struts) to S4, then to build level 0.5, from reference location
       #uses movej for the rotation and to get close to the build plate, to avoid sketchiness
@@ -159,6 +179,10 @@ for edge in setup["edges"]:
       siegfried.set_pose(siegfried_trans, acc = a, vel = v)
       siegfried_trans.pos.z -= (globalSetup["edgeRelativeDistance"]["z"]-0.008)
       siegfried.set_pose(siegfried_trans, acc = a, vel = v)
+
+      siegfried.send_program('set_tool_digital_out(0, False)') #open strut tool
+      time.sleep(sleepTime1)
+
       #use movej to go back to origin point after moving back up
       siegfried_trans.pos.z += (globalSetup["edgeRelativeDistance"]["z"])
 
diff --git a/01_Code/physical_computing_interface/setup/serve.js b/01_Code/physical_computing_interface/setup/serve.js
index b5606038b0bba15f9f2500b9b454cd55bd1c6218..23ec1dda2562953b77240de531f8c2691e947aa8 100644
--- a/01_Code/physical_computing_interface/setup/serve.js
+++ b/01_Code/physical_computing_interface/setup/serve.js
@@ -51,7 +51,7 @@ function runPython_urx(setup){
   if(setup.ur10Setup.parameters.run){
     console.log("Call python script:")
     var commands=[];
-    commands.push("python " + root+setup.ur10Setup.parameters.pythonFileName +".py");
+    commands.push("python3 " + root+setup.ur10Setup.parameters.pythonFileName +".py");
     runListCommand(commands,0);
     
   }else{