diff --git a/lib/python/labcomm2014/LabComm.py b/lib/python/labcomm2014/LabComm.py
index 4b536ace9e7ffb626d1c17385e94ecbe337fd467..98981275e0edc14e79004686fe6b13b2397cebca 100644
--- a/lib/python/labcomm2014/LabComm.py
+++ b/lib/python/labcomm2014/LabComm.py
@@ -874,7 +874,11 @@ class Decoder(Codec):
         super(Decoder, self).__init__()
         self.reader = reader
         self.version = version
-        
+        self.handlers = {}
+
+    def register_handler(self, sig, handler):
+        self.handlers[str(sig)] = handler
+
     def unpack(self, format):
         size = packer.calcsize(format)
         data = ""
@@ -903,6 +907,17 @@ class Decoder(Codec):
         else:    
             raise Exception("Invalid type index %d" % index)
 
+    def runOne(self):
+        data,decl = self.decode()
+        if decl:
+            if data:
+                if str(decl) in self.handlers:
+                    handler = self.handlers[str(decl)]
+                    handler(data)
+                else:
+                    print ("No handler for %s" % decl.name )
+
+
     def decode(self):
         while True:
             index = self.decode_type_number()