     }
 }
 
+/// Enum which represents RealmCollectionChange
 public enum Change<T> {
     typealias Element = T
     
+    /// Initial value
     case initial(T)
+    
+    /// RealmCollection was updated
     case update(T, deletions: [Int], insertions: [Int], modifications: [Int])
 }
 
 public extension Reactive where Base: RealmCollection {
     
+    /// SignalProducer that sends changes as they happen
     public var changes: SignalProducer<Change<Base>, RealmError> {
         var notificationToken: NotificationToken? = nil
         

import ReactiveSwift
import RealmSwift

public struct RealmError : Error {
    public let underlyingError: NSError
    public init(underlyingError: NSError){


//MARK: Table view


/// Protocol which allows UITableView to be reloaded automatically when database changes happen
public protocol RealmTableViewReloading {
    associatedtype Element: Object
    var tableView: UITableView! { get set }
}

public extension Reactive where Base: UIViewController, Base: RealmTableViewReloading {
    
    /// Binding target which updates tableView according to received changes
    public var changes: BindingTarget<Change<Results<Base.Element>>> {
        return makeBindingTarget { vc, changes in
            guard let tableView = vc.tableView else { return }
