diff --git a/bulmex.cabal b/bulmex.cabal
--- a/bulmex.cabal
+++ b/bulmex.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 437fddec128f807a107380e8703fad0e32c13b707a2252431b9ac45157b6de50
+-- hash: 24b48915c10fa2938bcde435e5aab601ccfefd05a2a2c4f9256067a879f93239
 
 name:           bulmex
-version:        3.0.0
+version:        4.0.0
 synopsis:       Reflex infused with bulma (css)
 description:    Reflex infused with bulma, [Implements](https://hackage.haskell.org/package/bulmex/docs/Reflex-Bulmex-Modal.html) the [modal](https://bulma.io/documentation/components/modal/) for example. Also has helper functions for common tasks. such as making server side rendering easier. See related [blogpost](https://jappieklooster.nl/reflex-server-side-html-rendering.html).
 category:       Web
diff --git a/src/Reflex/Bulmex/Input/Debounce.hs b/src/Reflex/Bulmex/Input/Debounce.hs
--- a/src/Reflex/Bulmex/Input/Debounce.hs
+++ b/src/Reflex/Bulmex/Input/Debounce.hs
@@ -6,10 +6,10 @@
 -- | This makes it easy to create auto-save operations
 --   not limited to saves.
 module Reflex.Bulmex.Input.Debounce
-  ( InputStates(..)
-  , defStateAttr
-  , withInputDebounceEvt
+  ( withInputDebounceEvt
   , withInput
+  , InputStates(..)
+  , defStateAttr
   )
 where
 
@@ -42,12 +42,12 @@
      , PerformEvent t m
      )
   => NominalDiffTime -- ^ Delay before posting the request
-  -> (result -> Bool) -- ^ Was the final requess successfull?
-  -> (Dynamic t InputStates -> m (b, Event t inputEvt)) -- ^ Widget body reacting to states
+  -> (result -> Bool) -- ^ Was the final requess successfull? For example: (isJust . reqSuccess)
   -> (b -> Event t inputEvt -> m (Event t result)) -- ^ Action function
+  -> (Dynamic t InputStates -> m (b, Event t inputEvt)) -- ^ Widget body reacting to states
   -> m (Event t result, b)
-withInputDebounceEvt debtime succF stateF =
-  withInput (debounce debtime) succF
+withInputDebounceEvt debtime succF actF stateF =
+  withInput (debounce debtime) succF actF
     $ const
     $ fmap (\(one', two) -> (one', two, one'))
     . stateF
@@ -66,14 +66,14 @@
 withInput
   :: (PostBuild t m, MonadFix m, MonadHold t m)
   => (Event t inputEvt -> m (Event t inputEvt)) -- ^ change input timeline, eg pure for no change
-  -> (result -> Bool) -- ^ Was the final requess successfull?
-  -> (  Event t result
+  -> (actionResult -> Bool) -- ^ Was the final requess successfull?
+  -> (actArgs -> Event t inputEvt -> m (Event t actionResult)) -- ^ Action function
+  -> (  Event t actionResult
      -> Dynamic t InputStates
-     -> m (actArgs, Event t inputEvt, finalRes)
+     -> m (actArgs, Event t inputEvt, innerWidgetResult)
      ) -- ^ Widget body reacting to states
-  -> (actArgs -> Event t inputEvt -> m (Event t result)) -- ^ Action function
-  -> m (Event t result, finalRes)
-withInput timeF isSuccessF createTypeEvt reqFunc = mdo
+  -> m (Event t actionResult, innerWidgetResult)
+withInput timeF isSuccessF reqFunc createTypeEvt = mdo
   (someData, typeEvtImmediate, result) <- createTypeEvt postFinished areaState
   typeEvtDeb                           <- timeF typeEvtImmediate
   postFinished                         <- reqFunc someData typeEvtDeb
diff --git a/src/Reflex/Bulmex/Modal.hs b/src/Reflex/Bulmex/Modal.hs
--- a/src/Reflex/Bulmex/Modal.hs
+++ b/src/Reflex/Bulmex/Modal.hs
@@ -1,8 +1,8 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecursiveDo       #-}
 
--- | A modal dialogue, eg pop up, for example to confirm an action.
---   Puts code behinds bulma's modal styling: https://bulma.io/documentation/components/modal/
+-- | A modal dialogue, for example to confirm an action.
+--   Makes bulma's <https://bulma.io/documentation/components/modal/ modal> styling work
 module Reflex.Bulmex.Modal
   ( modal
   , modal'
