     public let name: String
 
     /// Whether the element is case insensitive or not
-    public var caseInsensitive: Bool
-
-    var userInfo = [CodingUserInfoKey: Any]()
+    public var caseInsensitive: Bool {
+        return options.caseInsensitive
+    }
+
+    var userInfo: [CodingUserInfoKey: Any] {
+        return options.userInfo
+    }
 
     /// All attributes
     public var allAttributes = [String: XMLAttribute]()

/// The implementation of XMLParserDelegate and where the lazy parsing actually happens.
class LazyXMLParser: NSObject, SimpleXmlParser, XMLParserDelegate {
    required init(_ options: SWXMLHashOptions) {
        self.options = options
        self.root.caseInsensitive = options.caseInsensitive
        self.root.userInfo = options.userInfo
        super.init()
    }

    var root = XMLElement(name: rootElementName, caseInsensitive: false)
    var parentStack = Stack<XMLElement>()
    var elementStack = Stack<String>()


/// The implementation of XMLParserDelegate and where the parsing actually happens.
class FullXMLParser: NSObject, SimpleXmlParser, XMLParserDelegate {
    required init(_ options: SWXMLHashOptions) {
        root = XMLElement(name: rootElementName, options: options)
        self.options = options
        super.init()
    }

    let root: XMLElement
    var parentStack = Stack<XMLElement>()
    let options: SWXMLHashOptions

