diff --git a/MemberNodes.py b/MemberNodes.py
index 591263bc6f220e2389079b86ee8e37e76220b72d..b80514189e450cccb109ed5bce496a9d4e7b1f09 100644
--- a/MemberNodes.py
+++ b/MemberNodes.py
@@ -70,7 +70,7 @@ class MethodNode(ASTNode):
                 self.methodType = TypeNode(n)
 
         for node in parseTree.children:
-            if node.name == 'methodMod':
+            if node.name == 'methodMod' or node.name == "interfaceMod":
                 for m in node.children:
                     self.mods.append(m.lex)
 
diff --git a/TypeNodes.py b/TypeNodes.py
index 39d0f5dd346cafd5970da7858de5fc0cb5555134..18bf449e7477cadfa78e6298df59820676fb1635 100644
--- a/TypeNodes.py
+++ b/TypeNodes.py
@@ -177,7 +177,7 @@ class ClassNode(ClassInterNode):
             superContains = self.superClass.getContains(hierarchy + [canonName])
             for con in superContains:
                 conOverwritten = False
-                for method in contains:
+                for index, method in enumerate(contains):
                     if (method == con):
                         # cannot have same signiture but different return types
                         if (method.methodType != con.methodType):
@@ -192,6 +192,9 @@ class ClassNode(ClassInterNode):
                         if 'protected' in method.mods and 'public' in con.mods:
                             raise Exception("ERROR: Protected method '{}' in class '{}' replaces public method '{}' in class {}".format(method.name, self.name, con.name, self.superClass.name))
                         conOverwritten = True
+                        if not method.body:
+                            contains[index] = con
+                            conOverwritten = False
                         break
                 if not conOverwritten:
                     addToContains.append(con)