         
     }
     
-    func stop() {
+    public func stop() {
+        // TODO: this needs a bit more work
         let center = NotificationCenter.default
         center.removeObserver(self)
     }

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

        case didChangeFrame
    }
    
    fileprivate var callbacks: [KeyboardEvent : TypistCallback] = [:]
    
    public func on(event: KeyboardEvent, do callback: TypistCallback?) -> Self {
        callbacks[event] = callback
        return self
    }
    
    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)
