     public private(set) var children: [AEXMLElement] = [AEXMLElement]()
     
     /// XML Element name.
-    public let name: String
+    public var name: String
     
     /// XML Element value.
     public var value: String?
     
     /// XML Element attributes.
-    public var attributes: [String : String] = [String : String]()
+    public var attributes: [String : String]
     
     /// String representation of `value` property (if `value` is `nil` this is empty String).
     public var stringValue: String { return value ?? String() }

    
        :returns: An initialized `AEXMLElement` object.
    */
    public init(_ name: String, value: String? = nil, attributes: [String : String]? = nil) {
        self.name = name
        self.value = value
        if let initialAttributes = attributes {
            self.attributes = initialAttributes
        }
    }
    
    // MARK: XML Read

    public var doubleValue: Double { return (stringValue as NSString).doubleValue }
    
    // MARK: Lifecycle
    
    private struct Defaults {
        static let name = String()
        static let attributes = [String : String]()
    }
    
    /**
        Designated initializer - `name` is required, others are optional.
