         //TODO: how to ensure that typing is consistent?
         // return [fnParse -> Any, fnCast -> MDLType] // this may work
         
-        // yes, the design's a bit convoluted, but allows great flexability!
+        // yes, the design's a bit convoluted, but allows great flexibility!
         // - note: with great flexibility, comes great responsibility!!
         //   - this is true, both from a performance aspect (reference retention) 
         // - as well as from a security aspect (arbitrary execution from remote XML)

import Fuzi
import Swinject
import ModelIO

public enum SpectraXMLNodeType: String {
    case World = "world"

    public func parse(container: Container, options: [String: AnyObject] = [:]) {
        for child in xml!.root!.children {
            let (tag, key) = (child.tag!, child.attributes["key"])

            let nodeParser = self.parser.resolve(SpectraXMLNodeParser.self, arguments: (tag, key, child, options))!
            nodeParser(container: container, node: child, key: key, options: options)
        }
    }
}
