         }
     }
     
-    private func setupTransactionHooks() {
+    private func installTransactionObserverHooks() {
         let dbPointer = unsafeBitCast(self, UnsafeMutablePointer<Void>.self)
         
         sqlite3_update_hook(sqliteConnection, { (dbPointer, updateKind, databaseName, tableName, rowID) in
+            print("sqlite3_update_hook")
             let db = unsafeBitCast(dbPointer, Database.self)
-            
-            // Notify change event
-            if !db.transactionObservers.isEmpty {
-                db.didChangeWithEvent(DatabaseEvent(
-                    kind: DatabaseEvent.Kind(rawValue: updateKind)!,
-                    databaseName: String.fromCString(databaseName)!,
-                    tableName: String.fromCString(tableName)!,
-                    rowID: rowID))
-            }
+            db.didChangeWithEvent(DatabaseEvent(
+                kind: DatabaseEvent.Kind(rawValue: updateKind)!,
+                databaseName: String.fromCString(databaseName)!,
+                tableName: String.fromCString(tableName)!,
+                rowID: rowID))
             }, dbPointer)
         
         
         sqlite3_commit_hook(sqliteConnection, { dbPointer in
             let db = unsafeBitCast(dbPointer, Database.self)
-            
             do {
                 try db.willCommit()
                 db.statementCompletion = .TransactionCommit

        
        sqlite3_rollback_hook(sqliteConnection, { dbPointer in
            let db = unsafeBitCast(dbPointer, Database.self)
            
            switch db.statementCompletion {
            case .TransactionErrorRollback:
                // A transactionObserver has rollbacked the transaction.

            }, dbPointer)
    }
    
    private func uninstallTransactionObserverHooks() {
        sqlite3_update_hook(sqliteConnection, nil, nil)
        sqlite3_commit_hook(sqliteConnection, nil, nil)
        sqlite3_rollback_hook(sqliteConnection, nil, nil)
    }
    
    private enum StatementCompletion {
        // Statement has ended with a commit (implicit or explicit).
        case TransactionCommit
