diff --git a/index.html b/index.html
index bcf918a68e74552495d070bac1c8ce5786df0f02..1deccb1d7c7a780af5e10fd0d8ebfa503d1f01bc 100644
--- a/index.html
+++ b/index.html
@@ -15,6 +15,6 @@
     <script type="module" src="/src/cg/perspectiveDivide.ts"></script>
     <script type="module" src="/src/cg/walkToVec.ts"></script>
     <script type="module" src="/src/cg/basis.ts"></script-->
-    <script type="module" src="/src/cg/loadBunnyDemo.ts"></script>
+    <script type="module" src="/src/cg/raytracing1.ts"></script>
   </body>
 </html>
diff --git a/src/cg/basis.ts b/src/cg/basis.ts
index 449d59cd21b4eb42d978be02babc6fc485471a12..22c8ef94179c96d458c1453e61fbbde4466f9287 100644
--- a/src/cg/basis.ts
+++ b/src/cg/basis.ts
@@ -1,6 +1,6 @@
 import Playground from "./playground";
 import { vecAdd } from "./utils";
-import { vecMultiply } from "./utils";
+import { vecMultiplyScalar } from "./utils";
 
 const pg = new Playground();
 pg.gridXZ();
@@ -8,7 +8,7 @@ pg.gridXZ();
 const initialVec = [1.5, 2, 0.3];
 
 let basis = [1, 2, 1];
-basis = vecMultiply(basis, 0.5);
+basis = vecMultiplyScalar(basis, 0.5);
 const iHat = [basis[0], 0, 0];
 const jHat = [0, basis[1], 0];
 const kHat = [0, 0, basis[2]];
diff --git a/src/cg/raytracing1.ts b/src/cg/raytracing1.ts
index 117f6a9745701f473051595d0e305a747eeb36eb..97636d3ec4c93038a9813b1ff662819e8d4fddcb 100644
--- a/src/cg/raytracing1.ts
+++ b/src/cg/raytracing1.ts
@@ -1,15 +1,18 @@
 import Playground from "./playground";
+import { vecDotProduct, vecMultiplyScalar, vecSubtract } from "./utils";
+
 const pg = new Playground();
 
 const sphere = {
-    position: [0, .5, -3],
-    radius: 1.23
+    position: [0, .5, -3], //C - Center of sphere
+    radius: 0.5
 }
 pg.visCamera(-1);
 pg.gridXZ()
 
-const o = [0, 0, 0]
-const co = ... // O - C
+const o = [0, 0, 0]; //O - Origin
+const co = vecSubtract(o, sphere.position) // O - C
+const rsq = sphere.radius * sphere.radius;
 
 const step = 1 / 8
 
@@ -18,25 +21,25 @@ for (let yCoord = -1; yCoord <= 1; yCoord +=  step) {
     for (let xCoord = -1; xCoord <= 1; xCoord +=  step) {
 
         const v = [xCoord, yCoord, -1]
-        const ov = ... // V - O
+        const ov = vecSubtract(v, o); // V - O
 
         pg.visVector(ov)
 
-        const a = ... // <---- see equations above
-        const b = ... // <---- see equations above
-        const c = ... // <---- see equations above
+        const a = vecDotProduct(ov, ov); // a = (V - O)*(V _ O)
+        const b = 2* vecDotProduct(ov, co); // b = 2 * ((V - O)*(O - C))
+        const c = vecDotProduct(co, co) - rsq; // c = ((O - C)*(O - C))-r^2
  
-        const discriminant = ... // <---- see equations above
+        const discriminant = (b*b) - (4*a*c); // b^2 - 4*a*c
 
         const t1 = (-b + Math.sqrt(discriminant)) / (2 * a)
         const t2 = (-b - Math.sqrt(discriminant)) / (2 * a)
         
         if (t1) {
-            pg.visPoint(vecMultiplyScalar(t1, v),{color:"red"});
+            pg.visPoint(vecMultiplyScalar(v, t1),{color:"red"});
         }
 
         if (t2) {
-            pg.visPoint(vecMultiplyScalar(t2, v),{color:"blue"});
+            pg.visPoint(vecMultiplyScalar(v, t2),{color:"blue"});
         }
 
     }
diff --git a/src/cg/utils.ts b/src/cg/utils.ts
index 6f40b82661fd5c589cc39f110d0728a771571037..3441189d55ab570eff9a14df0e15637362918b24 100644
--- a/src/cg/utils.ts
+++ b/src/cg/utils.ts
@@ -11,21 +11,47 @@ export function vecAdd(vecOne: Array<number>, vecTwo: Array<number>){
 }
 
 export function vecSubtract(vecOne: Array<number>, vecTwo: Array<number>){
-    let vecSubt: Array<number> = vecOne;
+    //let vecSubt: Array<number> = vecOne;
 
-    vecSubt[0] -= vecTwo[0];
+    /*vecSubt[0] -= vecTwo[0];
     vecSubt[1] -= vecTwo[1];
     vecSubt[2] -= vecTwo[2];
 
+    return vecSubt;*/
+
+    return[
+        vecOne[0] - vecTwo[0],
+        vecOne[1] - vecTwo[1],
+        vecOne[2] - vecTwo[2]
+    ]
+}
+
+export function vecNumSubtract(vecOne: Array<number>, number: number){
+    let vecSubt: Array<number> = vecOne;
+
+    vecSubt[0] -= number;
+    vecSubt[1] -= number;
+    vecSubt[2] -= number;
+
     return vecSubt;
 }
 
-export function vecMultiply(vecOne: Array<number>, factor: number){
-    vecOne[0] *= factor;
-    vecOne[1] *= factor;
-    vecOne[2] *= factor;
+export function vecMultiplyScalar(vecOne: Array<number>, scalar: number){
+    return[
+        vecOne[0] * scalar,
+        vecOne[1] * scalar,
+        vecOne[2] * scalar,
+    ]
+}
+
+export function vecMultiply(vecOne: Array<number>, vecTwo: Array<number>){
+    let vecMultiplied: Array<number> = [];
+
+    vecMultiplied[0] = vecOne[0] * vecTwo[0];
+    vecMultiplied[1] = vecOne[1] * vecTwo[1];
+    vecMultiplied[2] = vecOne[2] * vecTwo[2];
 
-    return vecOne;
+    return vecMultiplied;
 }
 
 export function vecLength(vec: Array<number>){
@@ -50,8 +76,10 @@ export function vecNormalize(vec: Array<number>){
 }
 
 export function vecDotProduct(vecOne: Array<number>, vecTwo: Array<number>){
-    let dotProduct = vecOne[0]*vecTwo[0] + vecOne[1]*vecTwo[1] + vecOne[2]*vecTwo[2];
-    return dotProduct;
+    //let dotProduct = vecOne[0]*vecTwo[0] + vecOne[1]*vecTwo[1] + vecOne[2]*vecTwo[2];
+    return(
+        vecOne[0]*vecTwo[0] + vecOne[1]*vecTwo[1] + vecOne[2]*vecTwo[2]
+    )
 }
 
 export function vecAngle(vecOne: Array<number>, vecTwo: Array<number>){