diff --git a/TypeNodes.py b/TypeNodes.py
index d5152a89f9509e74ac533971ff456350be7fcc47..69a1a345b2c7faf58f05392ec7ad7ee663d4bb85 100644
--- a/TypeNodes.py
+++ b/TypeNodes.py
@@ -162,8 +162,8 @@ class ClassNode(ClassInterNode):
         for con in contains:
             if 'abstract' in con.mods and (not('abstract' in self.mods)):
                 raise Exception("ERROR: Non-abstract Class '{}' contains an abstract method".format(self.name))
-            if (not con.body) and (not ('native' in con.mods)) and (not ('abstract' in self.mods)):
-                raise Exception("ERROR: Non-abstract Class '{}' contains an abstract method".format(self.name))
+            if (not con.body) and (not ('native' in con.mods)) and (not ('abstract' in self.mods)) and (not (con in self.constructors)):
+                raise Exception("ERROR: Non-abstract Class '{}' contains an abstract method {}".format(self.name, con.name))
 
     # hierarchy: string[]
     def getContains(self, hierarchy):
@@ -178,6 +178,8 @@ class ClassNode(ClassInterNode):
             for con in superContains:
                 conOverwritten = False
                 for method in contains:
+                    print(method)
+                    print(con)
                     if (method == con):
                         # cannot have same signiture but different return types
                         if (method.methodType != con.methodType):