         return view
     }()
     private var engine: BrowserEngine
+    
+    // MARK: - Lifetime begin
 
-    init(object: Object, engine: BrowserEngine) {
+    init(object: DynamicObject, engine: BrowserEngine) {
         self.object = object
         self.engine = engine
-//        properties = schema.properties
-//        filteredProperties = schema.properties.filter { filters.contains($0.name) }
+        properties = object.objectSchema.properties
         super.init(nibName: nil, bundle: nil)
-//        title =  schema.className
+        title =  object.objectSchema.className
     }
 
+    public override func loadView() {
+        view = viewRealm
+    }
+    
     override public func viewDidLoad() {
         super.viewDidLoad()
         configureTableView()
         configureBarButtonItems()
+        subscribeToChanges()
     }
 
-    public override func loadView() {
-        view = viewRealm
+    private func configureBarButtonItems() {
+        let editButton = UIBarButtonItem(barButtonSystemItem: .edit, target: self, action: .toggleEdit)
+        editButton.style = .done
+        navigationItem.rightBarButtonItems = [editButton]
+    }
+
+    required public init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+    
+    // MARK: Lifetime begin
+    // MARK: - View Setup
+    
+    private func subscribeToChanges() {
+        engine.observe(object: object) { [unowned self] in
+            self.viewRealm.tableView.reloadData()
+        }
     }
 
     private func configureTableView() {

    }
}

fileprivate extension Selector {
    static let toggleEdit = #selector(RealmPropertyBrowser.actionToggleEdit(_:))
}

}

extension RealmPropertyBrowser: UITableViewDataSource {
    
    public func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        let property = properties[indexPath.row]
        let stringvalue = BrowserTools.stringForProperty(property, object: object)
        if let cell = cell as? RealmPropertyCell {
            cell.cellWithAttributes(propertyTitle: property.name,
                                    propertyValue: stringvalue,
                                    editMode:isEditMode,
                                    property:property)
        }
    }
    
    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let dequeued = tableView.dequeueReusableCell(withIdentifier: RealmPropertyCell.identifier),
            let cell = dequeued as? RealmPropertyCell else {
                fatalError("Error: Cell dequeued did not match required type \(RealmPropertyCell.self)")
        }
        cell.delegate = self
        return cell
    }
    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
