diff --git a/pykat/commands.py b/pykat/commands.py
index c05a48c7e668f9408014283e0a2b9bb205f1a9e8..dbb5c24c33f7a169bb2e1e7ca4c9175209057824 100644
--- a/pykat/commands.py
+++ b/pykat/commands.py
@@ -319,7 +319,78 @@ class gauss(object):
             kat.nodes[node].setGauss(kat.components[component], gp)
         else:
             kat.nodes[node].setGauss(kat.components[component], gpx, gpy)
-            
+ 
+# class tf(Command):
+#
+#     class fQ(object):
+#         def __init__(self, f, Q, tf):
+#             assert(tf is not None)
+#             self._tf = tf
+#             self.__f = Param("f", self, None, canFsig=False, isPutable=True, isPutter=False, isTunable=True)
+#             self.__Q = Param("Q", self, None, canFsig=False, isPutable=True, isPutter=False, isTunable=True)
+#
+#         def _register_param(self, param):
+#             self._tf._params.append(param)
+#
+#         @property
+#         def f(self): return self.__f
+#         @f.setter
+#         def f(self,value): self.__f.value = SIfloat(value)
+#
+#         @property
+#         def Q(self): return self.__Q
+#         @Q.setter
+#         def Q(self,value): self.__Q.value = SIfloat(value)
+#
+#     def __init__(self, name):
+#         Command.__init__(self, name, False)
+#         self.zeros = []
+#         self.poles = []
+#         self.gain = 1
+#         self.phase = 0
+#         self._params = []
+#
+#     def addPole(self,f, Q):
+#         self.poles.append(tf.fQ(SIfloat(f), SIfloat(Q), self))
+#
+#     def addZero(self,f, Q):
+#         self.zeros.append(tf.fQ(SIfloat(f), SIfloat(Q), self))
+#
+#     @staticmethod
+#     def parseFinesseText(text):
+#         values = text.split()
+#
+#         if ((len(values)-4) % 3) != 0:
+#             raise pkex.BasePyKatException("Transfer function Finesse code format incorrect '{0}'".format(text))
+#
+#         _tf = tf(values[1])
+#
+#         _tf.gain = SIfloat(values[2])
+#         _tf.phase = SIfloat(values[3])
+#
+#         N = int((len(values)-4) / 3)
+#
+#         for i in range(1,N+1):
+#             if values[i*3+1] == 'p':
+#                 _tf.addPole(SIfloat(values[i*3+2]), SIfloat(values[i*3+3]))
+#             elif values[i*3+1] == 'z':
+#                 _tf.addZero(SIfloat(values[i*3+2]), SIfloat(values[i*3+3]))
+#             else:
+#                 raise pkex.BasePyKatException("Transfer function pole/zero Finesse code format incorrect '{0}'".format(text))
+#
+#         return _tf
+#
+#     def getFinesseText(self):
+#         rtn = "tf {name} {gain} {phase} ".format(name=self.name,gain=self.gain,phase=self.phase)
+#
+#         for p in self.poles:
+#             rtn += "p {f} {Q} ".format(f=p.f, Q=p.Q)
+#
+#         for z in self.zeros:
+#             rtn += "p {f} {Q} ".format(f=z.f, Q=z.Q)
+#
+#         return rtn
+                   
 class tf(Command):
     
     class fQ(object):
@@ -339,7 +410,7 @@ class tf(Command):
     
     def addZero(self,f, Q):
         self.zeros.append(tf.fQ(SIfloat(f), SIfloat(Q)))
-        
+    
     @staticmethod
     def parseFinesseText(text):
         values = text.split()
diff --git a/pykat/finesse.py b/pykat/finesse.py
index 3f9971fca6fff0fc99570f0796f8fddcc3932c2a..5f9dd62a4a5a210522a13916da813be0bdea4ebd 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -1268,20 +1268,31 @@ class kat(object):
                     target = values[2]
                     variable = values[3]
                     
-                    if not hasattr(self, obj):
-                        raise pkex.BasePyKatException("put command `{0}` refers to non-existing component".format(line))
+                    try:
+                        if not hasattr(self, obj):
+                            raise pkex.BasePyKatException("put command `{0}` refers to non-existing component".format(line))
+                    
+                        obj = getattr(self, obj)
                     
-                    obj = getattr(self, obj)
+                        if not hasattr(obj, target):
+                            raise pkex.BasePyKatException("put command component `{0}` does not have a parameter `{1}`".format(line, target))
+                        
+                        target = getattr(obj, target)
                     
-                    if not hasattr(obj, target):
-                        raise pkex.BasePyKatException("put command component `{0}` does not have a parameter `{1}`".format(line, target))
+                        if not target.isPutable:
+                            raise pkex.BasePyKatException("put command `{0}` parameter `{1}` cannot be put to".format(line, target))
+                        
+                        target.put(self.getVariable(variable.replace('$', '')), alt)
                         
-                    target = getattr(obj, target)
+                    except pkex.BasePyKatException as ex:
+                        if self.verbose:
+                            print("Warning: ", ex.msg)
+                            print ("Parsing `{0}` into pykat object not implemented yet, added as extra line.".format(line))
                     
-                    if not target.isPutable:
-                        raise pkex.BasePyKatException("put command `{0}` parameter `{1}` cannot be put to".format(line, target))
+                        obj = line
+                        # manually add the line to the block contents
+                        self.__blocks[block].contents.append(line)
                         
-                    target.put(self.getVariable(variable.replace('$', '')), alt)
                  
                 elif (first == "scale"):
                     v = line.split()
@@ -1419,7 +1430,7 @@ class kat(object):
         
 
         except pkex.BasePyKatException as ex:
-            pkex.PrintError("Error parsing line: '%s':"%  line, ex)
+            pkex.PrintError("Pykat error parsing line: '%s':"%  line, ex)
             sys.exit(1)
             
     def saveScript(self, filename=None):