diff --git a/pykat/finesse.py b/pykat/finesse.py
index 93bf52fd9a143e37f84d1260880cede526ddb284..e0eaf27ecec5a5418fd206a54f0c56ec72c87a83 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -840,7 +840,7 @@ class kat(object):
         return object.__new__(cnew)
     
     def __init__(self, kat_file=None, kat_code=None, katdir="", katname="", tempdir=None, tempname=None):
-
+        self._unfreeze()
         self.__looking = False
         self.scene = None # scene object for GUI
         self.verbose = True
@@ -887,7 +887,18 @@ class kat(object):
         
         if kat_file != None:
             self.loadKatFile(kat_file)
+    
+        self._freeze()
+        
+    def _freeze(self): self.__dict__["____FROZEN____"] = True
+    def _unfreeze(self): self.__dict__["____FROZEN____"] = False
+        
+    def __setattr__(self, name, value):
+        if "____FROZEN____" in self.__dict__ and self.__dict__["____FROZEN____"] and not hasattr(self, name):
+            warnings.warn("'%s' does not have attribute called '%s'" % (self.__name, name), stacklevel=2)
 
+        super(kat, self).__setattr__(name, value)
+        
     def deepcopy(self):
         return copy.deepcopy(self)
     
@@ -2033,6 +2044,7 @@ class kat(object):
         
     def add(self, obj, block=NO_BLOCK):
         try:
+            self._unfreeze()
             obj.tag = block
             self.__blocks[block].contents.append(obj)
             
@@ -2065,9 +2077,11 @@ class kat(object):
                 raise pkex.BasePyKatException("Object {0} could not be added".format(obj))
                 
             obj._on_kat_add(self)
-            
+        
         except pkex.BasePyKatException as ex:
             pkex.PrintError("Error on adding object:", ex)
+        finally:
+            self._freeze()
 
     def readOutFile(self, filename):