       newFaces.push # calculating the center subdivided faces
         vertices: midVerts, normals: midNormals
 
-      # adding each subdivided face to the mesh
-      for f in newFaces
-        addFace f, exp, vertCount
-        #addFace face, exp, vertCount
-        vertCount += 9
       return newFaces
 
     # iterating through each original face and subdividing it if it is has non-uniform normals

          crossProduct = cross cross(n[i], d), n[i]
          ( magnitude(d) * crossProduct[j] / magnitude(crossProduct) for j in [0..2] )
        midVerts.push v01 = hermiteSpline(0.5, v, t, fIndex)
        midNormals.push n01 = [0, 0, 0]# TODO: how to calculate the normal!?
        #console.log "-----------------------" if fIndex < 2
        # console.log n01 if fIndex < 2

      newFaces = for i in [0..2] # calculating the outer subdivided faces
        vertices: [ midVerts[i], midVerts[ j = (i+2)%3 ], face.vertices[i] ]

    # Adds a face's vertices and normals to the mesh at the given index
    addFace = (face, mesh, index) -> for attr in ['vertices', 'normals']
      mesh[attr][index+j*3+k] = face[attr][j][k] for j in [0..2] for k in [0..2]

    # Expanding (duplicating) the normals and verts so that there is a 1:1 of verts to indices
    # This allows us to modify the normals on a per-face basis in edges and makes mesh spliting trivial
