             }
         }
         
+        // TODO: possibly split this into "packed-stride" and "packed-offset"
         // TODO: decide whether more complicated, nested layouts should be allowed
         if let packedLayout = elem.attributes["packed-layout"] where NSString(string: packedLayout).boolValue {
             vertexDesc.setPackedOffsets()

        }
    }
    
    public class func initParser() -> Container {
        var parser = Container()
        
        //TODO: how to ensure that typing is consistent?
        // return [fnParse -> Any, fnCast -> MDLType] // this may work
        

    var xml: XMLDocument?
    var parser: Container
    
    public init(parser: Container, data: NSData) {
        // NOTE: both this parser and the container injected into the SpectraXMLNodeParser functions
        // - should be able to reference the enum types read from the XSD file
        // - the simplest way to do this is create a container, load the XSD enums onto it, 
        //   - then use this parser container as a parent: nodeParserContainer = Container(parent: parser)
        //   - refer to SpectraXMLSpec for an example
        // - or, if scoping is an issue, apply the enums to both the parser & nodeParser containers
        self.parser = parser
        
        do {
            xml = try XMLDocument(data: data)
