     public typealias ValueType = Wrapped
 }
 
+@available(*, unavailable, renamed="Attribute")
 public func storedAttribute<T: AttributeType>(name: String? = nil) -> T {
-    return T(name: name, parent: Optional<T>.None)
+    fatalError()
 }
 
+@available(*, unavailable, renamed="Attribute")
 public func storedAttribute<T: AttributeType, U : AttributeType>(name: String = #function, parent: U) -> T {
-    return T(name: name, parent: parent)
+    fatalError()
 }

    
    public let keyPath: KeyPath
    
    @available(*, unavailable)
    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
}

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

