                     return
                 }
 
-                if let value = value as? T {
-                    observer.onNext(value)
-                    return
-                }
-                
-                if case _ = T.self as? ArrayType {
-                    observer.onNext(Array(value) as! T)
-                    return
-                }
-                
-                fatalError("Unexpected Observable type")
+                observer.onNext(value)
             }
             
             return AnonymousDisposable {

extension AnyRealmCollection: NotificationEmitter {}
extension Results: NotificationEmitter {}

private protocol ArrayType {}
extension Array: ArrayType {}

public extension NotificationEmitter where Self: RealmCollectionType {
    
    private func observable<T>() -> Observable<T> {
        return Observable.create {observer in
            let token = self.addNotificationBlock {changeset in
                

    }
    
    public func asObservableArray() -> Observable<Array<Self.Generator.Element>> {
        return asObservable().map { Array($0) }
    }
}