     
     public let keyPath: KeyPath
     
-    @available(*, unavailable)
+    public init(name: String? = nil) {
+        self.keyPath = KeyPath(name, parent: nil)
+    }
+    
     public init<A: AttributeType>(name: String?, parent: A?) {
         self.keyPath = KeyPath(name, parent: parent?.keyPath)
     }

public protocol AttributeType: ExpressionType, AttributeBase {
    associatedtype SourceType: ExpressionType
    associatedtype ValueType = SourceType.ValueType
    init<A: AttributeType>(name: String?, parent: A?)
}

public extension AttributeType {
    func attribute<T: ExpressionType>(name: String = #function) -> Attribute<T> {
        return storedAttribute(name, parent: self)
    }
}


    public typealias ValueType = Wrapped
}

@available(*, unavailable, renamed="Attribute")
public func storedAttribute<T: AttributeType>(name: String? = nil) -> T {
    fatalError()
}

@available(*, unavailable, renamed="Attribute")
public func storedAttribute<T: AttributeType, U : AttributeType>(name: String = #function, parent: U) -> T {
    fatalError()
}
