 
             push_face3 = (a, b, c) =>
                 geometry.faces.push(new THREE.Face3(a-1, b-1, c-1))
+                #geometry.faces.push(new THREE.Face3(b-1, a-1, c-1))   # both sides of faces, so material is visible from inside -- but makes some things like look really crappy; disable.  Better to just set a property of the material/light, which fixes the same problem.
+
+           push_face3_with_color = (a, b, c, d) =>
+                face = new THREE.Face3(a-1, b-1, c-1)
+                face.color.setHex(d)
+                geometry.faces.push(face)
                 #geometry.faces.push(new THREE.Face3(b-1, a-1, c-1))   # both sides of faces, so material is visible from inside -- but makes some things like look really crappy; disable.  Better to just set a property of the material/light, which fixes the same problem.
 
             # *polyogonal* faces defined by 4 vertices (squares), which for THREE.js we must define using two triangles

            for v in faces
                switch v.length
                    when 3
                        push_face3(v...)
                    when 4
                        push_face4(v...)
                    when 5

                for k in [0...face5.length] by 6   # yep, 6 :-()
                    faces.push(face5.slice(k,k+6))

            geometry = new THREE.Geometry()

            for k in [0...vertices.length] by 3
