diff --git a/UnitNodes.py b/UnitNodes.py
index 294bc059244536b987d33df9b22ccecc8c52b495..88b3200c14943c2cdc44537ec07a1aaba53a3307 100644
--- a/UnitNodes.py
+++ b/UnitNodes.py
@@ -65,12 +65,15 @@ class LiteralNode(ASTNode):
             self.code += ";Start of String Literal Creation for class " + self.typeName + "\n"
             # generate array of characters
             # then call new String(array)
+            
+            # remove quotation marks
+            value = self.value[1:-1]
 
             # FIRST: create char array for this string TODO figure out how to populate this array
             # 1. Allocating space for the char array in heap
             # Note: uses ecx to temporarily store the array length
             self.code += ";Start of char array creation\n" + \
-                p(instruction="push", arg1="eax", arg2=str(len(self.value)), comment="array length") + \
+                p(instruction="mov", arg1="eax", arg2=str(len(value)), comment="array length") + \
                 p(instruction="push", arg1="ecx", comment="saving ecx's value") + \
                 p(instruction="mov", arg1="ecx", arg2="eax", comment="ecx now stroes the array's length") + \
                 p(instruction="add", arg1="eax", arg2=2, comment="number of items to allocate on heap") + \
@@ -85,7 +88,22 @@ class LiteralNode(ASTNode):
             # 3. Storing length in the second slot
             self.code += p(instruction="mov", arg1="[eax+4]", arg2="ecx", comment="storing array length in second slot")
 
-            # 4. Restoring ecx
+            # 4. populate array with this string literal's chars
+            self.code += ";Start of populating char array\n"
+            # 4.1. store array pointer
+            self.code += p(instruction="push", arg1="eax", comment="push arrray pointer")
+            # 4.2. point to a[0]
+            self.code += p(instruction="add", arg1="eax", arg2=8, comment="eax points at a[0]")
+            # 4.3. loop through string
+            for i in range(len(value)):
+                if i != 0:
+                    self.code += p(instruction="add", arg1="eax", arg2=4, comment="eax points at a["+str(i)+"]")
+                self.code += p(instruction="mov", arg1="[eax]", arg2=str("dword \""+value[i]+"\""), comment="a["+str(i)+"]="+str(value[i]))
+            # 4.4. restore array pointer
+            self.code += p(instruction="pop", arg1="eax", comment="eax is pointer to array")
+            self.code += ";End of populating char array\n"
+
+            # 5. Restoring ecx
             self.code += p(instruction="pop", arg1="ecx", comment="restoring register ecx")
             self.code += ";End of char array creation\n"