 
     #return
     # Counting Curved Surfaces
-    subdivisionLevels = 1 # 4
+    subdivisionLevels = 4
     trianglesPerSurface = Math.pow 4, subdivisionLevels
-    @_eachFace (face) -> nOfTriangles += trianglesPerSurface if !isFlat face
-    console.log nOfTriangles*9
+    @_eachFace (face) -> ( nOfTriangles += trianglesPerSurface-1 if !isFlat face )
 
     # Subdividing Curved Surfaces
     exp[attr] = new Float32Array(nOfTriangles*9) for attr in ['vertices', 'normals']


  # Splits the object into 2^16 vert chunks and returns the chunks
  split: () => # TODO: since each object's verts are 1:1 with indices at this point we can use monolithic subarrays here
    console.log "splitting"
    bytesPerMesh = Math.pow(2,16) # is this even in bytes!?
    bytesPerMesh -= bytesPerMesh % 9 # Rounding the bytes per mesh down to the nearest face


        vertCount += 9
      else
        faces = [face]
        newFaces = []
        for i in [0..subdivisionLevels-1]
          newFaces = []
          for f in faces
            newFaces.push f2 for f2 in subdivide f, fIndex + Math.pow(4,i)
          faces = newFaces
        # adding each subdivided face to the mesh
        for f in newFaces
          addFace f, exp, vertCount
          #addFace face, exp, vertCount
          vertCount += 9


    indices = @indices = new Float32Array(nOfTriangles*3)
    @indices[i] = i for i in [0..@indices.length-1]
    @[attr] = exp[attr] for attr in ['vertices', 'normals']
    @verts = @vertices
