         let urlString = elem.attributes["url"]!
         var vertexDesc: MDLVertexDescriptor?
         
+        // file formats:
+        // - Alembic *.abc
+        // - Wavefront Object *.obj
+        // - Polygon *.abc
+        // - Standard Tessellation Language *.stl
+        
         if let vertexDescKey = elem.attributes["vertex-descriptor-ref"] {
             vertexDesc = container.resolve(MDLVertexDescriptor.self, name: vertexDescKey)
         }

}

// TODO: public class SpectraXMLWorldNode: SpectraXMLNode
// TODO: public class SpectraXMLMeshNode: SpectraXMLNode
// TODO: public class SpectraXMLMeshGeneratorNode: SpectraXMLNode

public class SpectraXMLObjectNode: SpectraXMLNode {
    public typealias NodeType = MDLObject

                    container.register(MDLObject.self, name: key!) { _ in
                        return SpectraXMLObjectNode.copy(obj)
                        }.inObjectScope(.None)
                case .Mesh:
                    let mesh = SpectraXMLMeshNode().parse(container, elem: child, options: options)
                    container.register(MDLMesh.self, name: key!) { _ in
                        //TODO: decide whether all of these should always copy()?
                        // - and always deepCopy()?
                        return mesh
//                        return SpectraXMLMeshNode.copy(mesh)
                    }.inObjectScope(.None)
                case .MeshGenerator:
                    let meshGenNode = MeshGeneratorNode()
                    meshGenNode.parseXML(container, elem: child, options: options)
                    let meshGen = meshGenNode.createGenerator(container, options: options)
                    
//                    let meshGen = SpectraXMLMeshGeneratorNode().parse(container, elem: child, options: options)
                    container.register(MeshGenerator.self, name: key!) { _ in
                        // TODO: copy meshGen
                        return meshGen
                    }
                case .Camera:
                    let camera = SpectraXMLCameraNode().parse(container, elem: child, options: options)
                    container.register(MDLCamera.self, name: key!) { _ in
