diff --git a/ur5_driver/driver.py b/ur5_driver/driver.py
index c7fdf3338abdc3925ee5261eed23bd92c38d6aca..a22a145aea4892984d3562f260df1cf58bb8aed3 100755
--- a/ur5_driver/driver.py
+++ b/ur5_driver/driver.py
@@ -14,11 +14,18 @@ PORT=30001
 MSG_OUT = 1
 MSG_QUIT = 2
 MSG_JOINT_STATES = 3
+MSG_MOVEJ = 4
 MULT_jointstate = 1000.0
+MULT_time = 1000000.0
+MULT_blend = 1000.0
 
 JOINT_NAMES = ['shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint',
                'wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint']
 
+Q1 = [2.2,0,-1.57,0,0,0]
+Q2 = [1.5,0,-1.57,0,0,0]
+  
+
 connected_robot = None
 connected_robot_lock = threading.Lock()
 connected_robot_cond = threading.Condition(connected_robot_lock)
@@ -104,6 +111,14 @@ class CommanderTCPHandler(SocketServer.BaseRequestHandler):
         with self.socket_lock:
             self.request.send(struct.pack("!i", MSG_QUIT))
             
+    def send_movej(self, q, a=3, v=0.75, t=0, r=0):
+        assert(len(q) == 6)
+        buf = ''.join([struct.pack("!i", MSG_MOVEJ),
+                       struct.pack("!iiiiii", *[MULT_jointstate * qq for qq in q]),
+                       struct.pack("!ii", MULT_jointstate * a, MULT_jointstate * v),
+                       struct.pack("!ii", MULT_time * t, MULT_blend * r)])
+        with self.socket_lock:
+            self.request.send(buf)
 
 class TCPServer(SocketServer.TCPServer):
     allow_reuse_address = True  # Allows the program to restart gracefully on crash
@@ -135,7 +150,11 @@ def main():
     r = getConnectedRobot(wait=True)
     print "Robot connected"
 
-    time.sleep(1)
+    r.send_movej(Q1)
+    time.sleep(2)
+    r.send_movej(Q2)
+    time.sleep(3)
+    
     print "Sending quit"
     r.send_quit()
 
diff --git a/ur5_driver/prog b/ur5_driver/prog
index 2efa6ff1777daa19865c65da99212cd62b17df96..57f43ef5f2cdc4c943e24b8b3b988bec74b57917 100644
--- a/ur5_driver/prog
+++ b/ur5_driver/prog
@@ -3,8 +3,11 @@ def driverProg():
   MSG_OUT = 1
   MSG_QUIT = 2
   MSG_JOINT_STATES = 3
+  MSG_MOVEJ = 4
   MULT_jointstate = 1000
-
+  MULT_time = 1000000.0
+  MULT_blend = 1000.0
+  
   def send_out(msg):
     enter_critical
     socket_send_int(1)
@@ -57,11 +60,11 @@ def driverProg():
 
   thread_state = run statePublisherThread()
   
-  movej([2.2,0,-1.57,0,0,0],2)
-  movej([1.5,0,-1.57,0,0,0],2)
+  #movej([2.2,0,-1.57,0,0,0],2)
+  #movej([1.5,0,-1.57,0,0,0],2)
   
   i = 0
-  while i < 5:
+  while i < 100:
     send_out("Listening")
     ll = socket_read_binary_integer(1)
 
@@ -74,6 +77,27 @@ def driverProg():
       if mtype == MSG_QUIT:
         send_out("Received QUIT")
         break
+      elif mtype == MSG_MOVEJ:
+        send_out("Received movej")
+	params_mult = socket_read_binary_integer(6+4)
+	if params_mult[0] == 0:
+	  send_out("Received no parameters for movej message")
+	end
+
+	# Unpacks the parameters
+	q = [params_mult[1] / MULT_jointstate,
+             params_mult[2] / MULT_jointstate,
+             params_mult[3] / MULT_jointstate,
+             params_mult[4] / MULT_jointstate,
+             params_mult[5] / MULT_jointstate,
+             params_mult[6] / MULT_jointstate]
+	a = params_mult[7] / MULT_jointstate
+	v = params_mult[8] / MULT_jointstate
+	t = params_mult[9] / MULT_time
+	r = params_mult[10] / MULT_blend
+
+	# Sends the command
+	movej(q, a, v, t, r)
       else:
         send_out("Received unknown message type")
       end