diff --git a/pyknow/engine.py b/pyknow/engine.py
index <HASH>..<HASH> 100644
--- a/pyknow/engine.py
+++ b/pyknow/engine.py
@@ -38,7 +38,7 @@ class KnowledgeEngine:
             Stablises a dict with shared attributes to be used
             by this KE's childs on a tree
         """
-        self.shared_attributes = shared_attributes
+        self.shared_attributes.update(shared_attributes)
 
     @property
     def parent(self):
diff --git a/pyknow/rule.py b/pyknow/rule.py
index <HASH>..<HASH> 100644
--- a/pyknow/rule.py
+++ b/pyknow/rule.py
@@ -139,6 +139,10 @@ class Rule:
         """ Not-so-nice way to access __conds """
         return self.__conds
 
+    def fn(self):
+        """ Expose fn outside """
+        return self.__fn
+
 
 class AND(Rule):
     """
Update shared attributes instead of overwriting it