diff --git a/AST.py b/AST.py
index 32e405a9fab05d0b83d826918ba919ef04711b7f..4a219c7b21f8e86e79b071927d2ccf1d55925193 100644
--- a/AST.py
+++ b/AST.py
@@ -95,5 +95,5 @@ def getParseTreeNodes(names, tree, terminateList = []):
         elif n.name in terminateList:
             continue
         else:
-            result.extend(getParseTreeNodes(names, n))
+            result.extend(getParseTreeNodes(names, n, terminateList))
     return result
diff --git a/Environment.py b/Environment.py
index 3d63f1411361298b52f1d0594e2521bd6bf38f4c..a798f8222b4cdc1e25e0781223091f7f9d660eb2 100644
--- a/Environment.py
+++ b/Environment.py
@@ -104,9 +104,8 @@ class GlobalEnv(Env):
         # 1. enclosing class/interface
         #    - already did
         # 2. single-type import
-        if name in imported:
-            if name in self.map:
-                return self.map.get(name)
+        if name in imported and name in self.map:
+            return self.map.get(name)
         # 3. type in the current package
         full = packageName + '.' + name
         # print(full)
@@ -123,6 +122,8 @@ class GlobalEnv(Env):
         for i in implicitly:
             if i in name and name in self.map:
                 return self.map.get(name)
+            elif (i+name) in self.map:
+                return self.map.get(i+name)
 
         raise Exception("ERROR: Can't find definition of {} in the Environment".format(key))
 
diff --git a/Test.py b/Test.py
index 3936a419a93341097957bbf8de46065a1afe7151..146b224ffc1800aa58f8611cfe910cd869b6da4e 100644
--- a/Test.py
+++ b/Test.py
@@ -45,9 +45,9 @@ def a2Multiple():
         print(c)
         print("**********************************************************")
         # get all files from stdlib folder
-        # testFiles = [join(dp, f) for dp, dn, filenames in walk('stdlib/2.0/java/') for f in filenames]
+        testFiles = [join(dp, f) for dp, dn, filenames in walk('stdlib/2.0/java/') for f in filenames]
         # get all files in the folder recursively
-        testFiles = [join(dp, f) for dp, dn, filenames in walk(c) for f in filenames]
+        testFiles += [join(dp, f) for dp, dn, filenames in walk(c) for f in filenames]
         run(testFiles)
         print("\n \n\n ")
 
diff --git a/TypeNodes.py b/TypeNodes.py
index a75a773616a2bbb2ba6a30785f6913c0404cc63e..2e6ab128ffb1171518bb359a1ceba3e0609718d8 100644
--- a/TypeNodes.py
+++ b/TypeNodes.py
@@ -95,12 +95,8 @@ class ClassNode(ASTNode):
         # 7. A class or interface must not declare two methods with the same signature (name and parameter types).
         unique = []
         for method in self.methods:
-            # print(method.name)
             key = (method.name, method.paramTypes)
             if key in unique:
-                # print(self.methods)
-                # print(key)
-                # print(unique)
                 raise Exception("ERROR: Class '{}' declares 2 methods with the same signature '{}'".format(self.name, key[0]))
             unique.append(key)
 
diff --git a/UnitNodes.py b/UnitNodes.py
index 476423887f6838e0279a85c938ce82ea1feb45f3..108dc37d780411113f39c2c8d16a7c7cdc342771 100644
--- a/UnitNodes.py
+++ b/UnitNodes.py
@@ -63,6 +63,7 @@ class TypeNode(ASTNode):
             nameNodes = getParseTreeNodes(['BOOLEAN', 'BYTE', 'CHAR', 'INT', 'SHORT'], parseTree)
             if nameNodes:
                 self.isPrimType = True
+                self.name = nameNodes[0].lex
             else:
                 self.name = getParseTreeNodes(['ID', 'COMPID'], parseTree)[0].lex