diff --git a/index.html b/index.html
index 9d8c7f8..590bbe3 100644
--- a/index.html
+++ b/index.html
@@ -25,7 +25,7 @@ import { Region, Kernel } from "./region.js";
 let r = Region.Create();
 let filler = (x, y, z)=>
 {
-    r.filled.push(Region.I(x, y, z));
+    r.voxels[Region.I(x, y, z)] = true;
 };
 filler(1, 1, 1);
 Kernel.Loop(Kernel.Corners, [1, 1, 1], filler);
diff --git a/region.js b/region.js
index 511da41..7eef695 100644
--- a/region.js
+++ b/region.js
@@ -36,7 +36,7 @@ export const Region =
 {
     Create()
     {
-        return {filled:[]};
+        return {voxels:[]};
     },
     I(inX, inY, inZ)
     {
@@ -53,23 +53,22 @@ export const Region =
     Surface(inRegion)
     {
         let surface = [];
-        inRegion.filled.forEach(inIndex =>
+        inRegion.voxels.forEach((inValue, inIndex) =>
         {
-            let coords = Region.XYZ(inIndex);
-            Kernel.Loop(Kernel.Corners, coords, (inX, inY, inZ)=>
+            if(inValue)
             {
-                let index = Region.I(inX, inY, inZ);
-                if(inRegion.filled[index] === undefined)
+                let coords = Region.XYZ(inIndex);
+                Kernel.Loop(Kernel.Corners, coords, (inX, inY, inZ)=>
                 {
-                    console.log(inX, inY, inZ, "surface");
-                    surface.push(inIndex);
-                    return true;
-                }
-                else
-                {
-                    console.log(inX, inY, inZ, "filled");
-                }
-            });
+                    let kernel = Region.I(inX, inY, inZ);
+                    if(!inRegion.voxels[kernel])
+                    {
+                        console.log(coords, "surface");
+                        surface.push(inIndex);
+                        return true;
+                    }
+                });
+            }
         });
         return surface;
     }