         case didChangeFrame
     }
     
-    var callbacks: [KeyboardEvent : TypistCallback] = [:]
+    fileprivate var callbacks: [KeyboardEvent : TypistCallback] = [:]
     
-    func on(event: KeyboardEvent, do callback: TypistCallback?) -> Self {
+    public func on(event: KeyboardEvent, do callback: TypistCallback?) -> Self {
         callbacks[event] = callback
         return self
     }
     
-    
-    func start() {
+    public func start() {
+        // TODO: start only notification that are needed (based on what handler are assigned)
         let center = NotificationCenter.default
         center.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)
         center.addObserver(self, selector: #selector(keyboardDidShow), name: .UIKeyboardDidShow, object: nil)

        
    }
    
    func stop() {
        let center = NotificationCenter.default
        center.removeObserver(self)
    }

    }
    
    
    public typealias TypistCallback = (KeyboardOptions) -> ()
    
    public enum KeyboardEvent {
        case willShow
        case didShow
        case willHide
