diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8fe4c4f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+.DS_Store
+.directory
+
+# Ignore auto-generated files by VS & VSCode.
+/.vs/
+/.vscode/
diff --git a/SunSpider/3d-cube.js b/SunSpider/3d-cube.js
index 9b9d898..5ca18ed 100644
--- a/SunSpider/3d-cube.js
+++ b/SunSpider/3d-cube.js
@@ -9,7 +9,6 @@
     var I = new Array();      // entity matrix
     var Origin = new Object();
     var Testing = new Object();
-    var LoopTimer;
 
     var validation = {
      20: 2889.0000000000045,
@@ -32,7 +31,7 @@
       var x = x1;
       var y = y1;
       var IncX1, IncY1;
-      var IncX2, IncY2;  
+      var IncX2, IncY2;
       var Den;
       var Num;
       var NumAdd;
@@ -84,13 +83,14 @@
     }
 
     function CalcNormal(V0, V1, V2) {
-      var A = new Array();   var B = new Array(); 
+      var A = new Array();
+      var B = new Array();
       for (var i = 0; i < 3; i++) {
         A[i] = V0[i] - V1[i];
         B[i] = V2[i] - V1[i];
       }
       A = CalcCross(A, B);
-      var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]); 
+      var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
       for (var i = 0; i < 3; i++) A[i] = A[i] / Length;
       A[3] = 1;
       return A;
@@ -141,10 +141,10 @@
 
     function Translate(M, Dx, Dy, Dz) {
       var T = [
-      [1,0,0,Dx],
-      [0,1,0,Dy],
-      [0,0,1,Dz],
-      [0,0,0,1]
+        [1,0,0,Dx],
+        [0,1,0,Dy],
+        [0,0,1,Dz],
+        [0,0,0,1]
       ];
       return MMulti(T, M);
     }
@@ -155,10 +155,10 @@
       var Cos = Math.cos(a);
       var Sin = Math.sin(a);
       var R = [
-      [1,0,0,0],
-      [0,Cos,-Sin,0],
-      [0,Sin,Cos,0],
-      [0,0,0,1]
+        [1,0,0,0],
+        [0,Cos,-Sin,0],
+        [0,Sin,Cos,0],
+        [0,0,0,1]
       ];
       return MMulti(R, M);
     }
@@ -169,10 +169,10 @@
       var Cos = Math.cos(a);
       var Sin = Math.sin(a);
       var R = [
-      [Cos,0,Sin,0],
-      [0,1,0,0],
-      [-Sin,0,Cos,0],
-      [0,0,0,1]
+        [Cos,0,Sin,0],
+        [0,1,0,0],
+        [-Sin,0,Cos,0],
+        [0,0,0,1]
       ];
       return MMulti(R, M);
     }
@@ -183,10 +183,10 @@
       var Cos = Math.cos(a);
       var Sin = Math.sin(a);
       var R = [
-      [Cos,-Sin,0,0],
-      [Sin,Cos,0,0],
-      [0,0,1,0],   
-      [0,0,0,1]
+        [Cos,-Sin,0,0],
+        [Sin,Cos,0,0],
+        [0,0,1,0],
+        [0,0,0,1]
       ];
       return MMulti(R, M);
     }
@@ -270,28 +270,28 @@
 
       // transformation matrix
       MTrans = [
-      [1,0,0,0],
-      [0,1,0,0],
-      [0,0,1,0],
-      [0,0,0,1]
+        [1,0,0,0],
+        [0,1,0,0],
+        [0,0,1,0],
+        [0,0,0,1]
       ];
-      
+
       // position information of qube
       MQube = [
-      [1,0,0,0],
-      [0,1,0,0],
-      [0,0,1,0],
-      [0,0,0,1]
+        [1,0,0,0],
+        [0,1,0,0],
+        [0,0,1,0],
+        [0,0,0,1]
       ];
-      
+
       // entity matrix
       I = [
-      [1,0,0,0],
-      [0,1,0,0],
-      [0,0,1,0],
-      [0,0,0,1]
+        [1,0,0,0],
+        [0,1,0,0],
+        [0,0,1,0],
+        [0,0,0,1]
       ];
-      
+
       // create qube
       Q[0] = new CreateP(-CubeSize,-CubeSize, CubeSize);
       Q[1] = new CreateP(-CubeSize, CubeSize, CubeSize);
@@ -301,24 +301,25 @@
       Q[5] = new CreateP(-CubeSize, CubeSize,-CubeSize);
       Q[6] = new CreateP( CubeSize, CubeSize,-CubeSize);
       Q[7] = new CreateP( CubeSize,-CubeSize,-CubeSize);
-      
+
       // center of gravity
       Q[8] = new CreateP(0, 0, 0);
-      
+
       // anti-clockwise edge check
       Q.Edge = [[0,1,2],[3,2,6],[7,6,5],[4,5,1],[4,0,3],[1,5,6]];
-      
+
       // calculate squad normals
       Q.Normal = new Array();
       for (var i = 0; i < Q.Edge.length; i++) Q.Normal[i] = CalcNormal(Q[Q.Edge[i][0]].V, Q[Q.Edge[i][1]].V, Q[Q.Edge[i][2]].V);
-      
+
       // line drawn ?
       Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];
-      
+
       // create line pixels
       Q.NumPx = 9 * 2 * CubeSize;
-      for (var i = 0; i < Q.NumPx; i++) CreateP(0,0,0);
-      
+      Q.LinePixels = new Array()
+      for (var i = 0; i < Q.NumPx; i++) Q.LinePixels.push(new CreateP(0,0,0));
+
       MTrans = Translate(MTrans, Origin.V[0], Origin.V[1], Origin.V[2]);
       MQube = MMulti(MTrans, MQube);
 
@@ -329,7 +330,7 @@
       DrawQube();
       Testing.Init = true;
       Loop();
-      
+
       // Perform a simple sum-based verification.
       var sum = 0;
       for (var i = 0; i < Q.length; ++i) {
diff --git a/worker/bomb-subtests/3d-cube.js b/worker/bomb-subtests/3d-cube.js
index 6b0d49e..527fcaa 100644
--- a/worker/bomb-subtests/3d-cube.js
+++ b/worker/bomb-subtests/3d-cube.js
@@ -8,13 +8,12 @@
 var I = new Array();      // entity matrix
 var Origin = new Object();
 var Testing = new Object();
-var LoopTimer;
 
 var validation = {
- 20: 2889.0000000000045,
- 40: 2889.0000000000055,
- 80: 2889.000000000005,
- 160: 2889.0000000000055
+  20: 2889.0000000000045,
+  40: 2889.0000000000055,
+  80: 2889.000000000005,
+  160: 2889.0000000000055
 };
 
 var DisplArea = new Object();
@@ -31,7 +30,7 @@
   var x = x1;
   var y = y1;
   var IncX1, IncY1;
-  var IncX2, IncY2;  
+  var IncX2, IncY2;
   var Den;
   var Num;
   var NumAdd;
@@ -83,13 +82,14 @@
 }
 
 function CalcNormal(V0, V1, V2) {
-  var A = new Array();   var B = new Array(); 
+  var A = new Array();
+  var B = new Array();
   for (var i = 0; i < 3; i++) {
     A[i] = V0[i] - V1[i];
     B[i] = V2[i] - V1[i];
   }
   A = CalcCross(A, B);
-  var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]); 
+  var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
   for (var i = 0; i < 3; i++) A[i] = A[i] / Length;
   A[3] = 1;
   return A;
@@ -140,10 +140,10 @@
 
 function Translate(M, Dx, Dy, Dz) {
   var T = [
-  [1,0,0,Dx],
-  [0,1,0,Dy],
-  [0,0,1,Dz],
-  [0,0,0,1]
+    [1,0,0,Dx],
+    [0,1,0,Dy],
+    [0,0,1,Dz],
+    [0,0,0,1]
   ];
   return MMulti(T, M);
 }
@@ -154,10 +154,10 @@
   var Cos = Math.cos(a);
   var Sin = Math.sin(a);
   var R = [
-  [1,0,0,0],
-  [0,Cos,-Sin,0],
-  [0,Sin,Cos,0],
-  [0,0,0,1]
+    [1,0,0,0],
+    [0,Cos,-Sin,0],
+    [0,Sin,Cos,0],
+    [0,0,0,1]
   ];
   return MMulti(R, M);
 }
@@ -168,10 +168,10 @@
   var Cos = Math.cos(a);
   var Sin = Math.sin(a);
   var R = [
-  [Cos,0,Sin,0],
-  [0,1,0,0],
-  [-Sin,0,Cos,0],
-  [0,0,0,1]
+    [Cos,0,Sin,0],
+    [0,1,0,0],
+    [-Sin,0,Cos,0],
+    [0,0,0,1]
   ];
   return MMulti(R, M);
 }
@@ -182,10 +182,10 @@
   var Cos = Math.cos(a);
   var Sin = Math.sin(a);
   var R = [
-  [Cos,-Sin,0,0],
-  [Sin,Cos,0,0],
-  [0,0,1,0],   
-  [0,0,0,1]
+    [Cos,-Sin,0,0],
+    [Sin,Cos,0,0],
+    [0,0,1,0],
+    [0,0,0,1]
   ];
   return MMulti(R, M);
 }
@@ -269,28 +269,28 @@
 
   // transformation matrix
   MTrans = [
-  [1,0,0,0],
-  [0,1,0,0],
-  [0,0,1,0],
-  [0,0,0,1]
+    [1,0,0,0],
+    [0,1,0,0],
+    [0,0,1,0],
+    [0,0,0,1]
   ];
-  
+
   // position information of qube
   MQube = [
-  [1,0,0,0],
-  [0,1,0,0],
-  [0,0,1,0],
-  [0,0,0,1]
+    [1,0,0,0],
+    [0,1,0,0],
+    [0,0,1,0],
+    [0,0,0,1]
   ];
-  
+
   // entity matrix
   I = [
-  [1,0,0,0],
-  [0,1,0,0],
-  [0,0,1,0],
-  [0,0,0,1]
+    [1,0,0,0],
+    [0,1,0,0],
+    [0,0,1,0],
+    [0,0,0,1]
   ];
-  
+
   // create qube
   Q[0] = new CreateP(-CubeSize,-CubeSize, CubeSize);
   Q[1] = new CreateP(-CubeSize, CubeSize, CubeSize);
@@ -300,24 +300,25 @@
   Q[5] = new CreateP(-CubeSize, CubeSize,-CubeSize);
   Q[6] = new CreateP( CubeSize, CubeSize,-CubeSize);
   Q[7] = new CreateP( CubeSize,-CubeSize,-CubeSize);
-  
+
   // center of gravity
   Q[8] = new CreateP(0, 0, 0);
-  
+
   // anti-clockwise edge check
   Q.Edge = [[0,1,2],[3,2,6],[7,6,5],[4,5,1],[4,0,3],[1,5,6]];
-  
+
   // calculate squad normals
   Q.Normal = new Array();
   for (var i = 0; i < Q.Edge.length; i++) Q.Normal[i] = CalcNormal(Q[Q.Edge[i][0]].V, Q[Q.Edge[i][1]].V, Q[Q.Edge[i][2]].V);
-  
+
   // line drawn ?
   Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];
-  
+
   // create line pixels
   Q.NumPx = 9 * 2 * CubeSize;
-  for (var i = 0; i < Q.NumPx; i++) CreateP(0,0,0);
-  
+  Q.LinePixels = new Array()
+  for (var i = 0; i < Q.NumPx; i++) Q.LinePixels.push(new CreateP(0,0,0));
+
   MTrans = Translate(MTrans, Origin.V[0], Origin.V[1], Origin.V[2]);
   MQube = MMulti(MTrans, MQube);
 
@@ -328,7 +329,7 @@
   DrawQube();
   Testing.Init = true;
   Loop();
-  
+
   // Perform a simple sum-based verification.
   var sum = 0;
   for (var i = 0; i < Q.length; ++i) {
