diff --git a/LineNodes.py b/LineNodes.py
index 15ac4571020a9e0cd425a3aa2a75edead6e640f4..52f1a024fec1f19358a2107d00b7771d5f027670 100644
--- a/LineNodes.py
+++ b/LineNodes.py
@@ -108,6 +108,7 @@ class VarDclNode(ASTNode):
             # Handling rule: variableInit expr
             self.variableInit = makeNodeFromExpr(parseTree.children[3].children[0], typeName)
 
+        self.myType = self.dclType.myType
         self.children.append(self.dclType)
         self.children.append(self.variableInit)
 
@@ -122,7 +123,6 @@ class VarDclNode(ASTNode):
             return self.env
 
     def checkType(self):
-        self.myType = self.dclType.myType
         if self.variableInit:
             self.variableInit.checkType()
             if not self.myType.assignable(self.variableInit.myType):
diff --git a/MemberNodes.py b/MemberNodes.py
index 6e27b092eaa835e7493c048534b95cfa4f2c1dd1..13ba951fffeac30d5656d1e6acce2163fa380ada 100644
--- a/MemberNodes.py
+++ b/MemberNodes.py
@@ -28,6 +28,7 @@ class FieldNode(ASTNode):
                 self.variableDcl = VarDclNode(node, self.typeName)
 
         self.name = self.variableDcl.name
+        self.myType = self.variableDcl.myType
 
         self.children.append(self.variableDcl)
 
@@ -36,7 +37,6 @@ class FieldNode(ASTNode):
 
     def checkType(self):
         self.variableDcl.checkType()
-        self.myType = self.variableDcl.myType
 
 ###########################################################
 
diff --git a/TypeNodes.py b/TypeNodes.py
index 458dea7969349ecfb2da88e0be56b271842107ab..1f793e69bcb6cb2925b6ba7085c18db51a4fcac9 100644
--- a/TypeNodes.py
+++ b/TypeNodes.py
@@ -143,7 +143,6 @@ class ClassInterNode(ASTNode):
                 print(i.name)
 
     def checkType(self):
-        self.myType = TypeStruct(self.canonName, self)
         for c in self.children:
             if c and hasattr(c, 'checkType'):
                 c.checkType()
@@ -153,14 +152,6 @@ class ClassNode(ClassInterNode):
     # always list all fields in the init method to show the class structure
     def __init__(self, parseTree, packageName):
         super().__init__(parseTree, packageName)
-        # self.parseTree = parseTree
-        # self.packageName = packageName
-        # self.name = ''
-        # self.methods = []
-        # self.superInter = []
-        # self.env = None
-        # self.children = []
-        # self.canonName = self.packageName + '.' + self.name
         self.fields = []
         self.constructors = []
         self.mods = []
@@ -196,6 +187,7 @@ class ClassNode(ClassInterNode):
                     order += 1
 
         self.canonName = self.packageName + '.' + self.name
+        self.myType = TypeStruct(self.canonName, self)
         self.children += self.fields + self.methods + self.constructors
 
     def buildEnv(self, parentEnv):
@@ -266,14 +258,6 @@ class InterNode(ClassInterNode):
     # always list all fields in the init method to show the class structure
     def __init__(self, parseTree, packageName):
         super().__init__(parseTree, packageName)
-        # self.parseTree = parseTree
-        # self.packageName = packageName
-        # self.name = ''
-        # self.methods = []
-        # self.superInter = []
-        # self.env = None
-        # self.children = []
-        # self.canonName = self.packageName + '.' + self.name
 
         for node in parseTree.children:
             if node.name == 'ID':
@@ -290,6 +274,7 @@ class InterNode(ClassInterNode):
                     self.methods.append(MethodNode(n, self.name, 0))  # order = 0 since no method body in interface needs to be checked
 
         self.canonName = self.packageName + '.' + self.name
+        self.myType = TypeStruct(self.canonName, self)
         self.children.extend(self.methods)
 
     def buildEnv(self, parentEnv):