diff --git a/src/bagserver.py b/src/bagserver.py
index faa2437d42516c58b691e4f4193a73af49e9feab..1fe0e3641131601fd2a5ff631fe831b9ef6bf5c2 100755
--- a/src/bagserver.py
+++ b/src/bagserver.py
@@ -1,15 +1,34 @@
 #!/usr/bin/env python
 
+import subprocess
+import sys
+import signal
+import os
+
 import rospy
 
 from lrs_srvs.srv import *
 
+procs = {}
+
 def start_recording(req):
     print "start_recording", req
+    command = "rosbag record -o " + req.uuid
+    print "COMMAND: ", command, " ".join(req.topics)
+    args = ["rosbag", "record", "-o", req.uuid]
+    args += req.topics
+    procs[req.uuid] = subprocess.Popen(args, 0, None, sys.stdout, sys.stdout,
+                                       preexec_fn=os.setsid)
+    print "STARTING: ", procs[req.uuid]
     return BSStartRecordingResponse(True, 0, "")
 
 def stop_recording(req):
     print "stop_recording", req
+    print "STOPPING: ", procs[req.uuid]
+    pid = procs[req.uuid].pid
+#    procs[req.uuid].kill()
+#    procs[req.uuid].send_signal(signal.CTRL_C_EVENT)
+    os.killpg(os.getpgid(pid), signal.SIGINT)
     return BSStopRecordingResponse(True, 0, "")
 
 if __name__ == "__main__":