     }
   }
   
-  internal func bnd_associatedObservableForValueForKey<T>(key: String, initial: T? = nil, set: (T -> ())? = nil) -> Observable<T> {
+  public func bnd_associatedObservableForValueForKey<T>(key: String, initial: T? = nil, set: (T -> ())? = nil) -> Observable<T> {
     if let observable: AnyObject = bnd_associatedObservables[key] {
       return observable as! Observable<T>
     } else {

  }
}

internal extension NSObject {
  
  internal var bnd_associatedObservables: [String:AnyObject] {
    get {

    }
  }
  
  public func bnd_associatedObservableForValueForKey<T: OptionalType>(key: String, initial: T? = nil, set: (T -> ())? = nil) -> Observable<T> {
    if let observable: AnyObject = bnd_associatedObservables[key] {
      return observable as! Observable<T>
    } else {
