diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -3,10 +3,10 @@
 
 module Main where
 
+import Climb
 import Control.Monad.Catch (MonadThrow)
 import Control.Monad.IO.Class (MonadIO)
 import Control.Monad.IO.Unlift (MonadUnliftIO (..), UnliftIO (..))
-import Climb
 import Linenoise
 
 newtype Repl a = Repl { unRepl :: ReplT () () IO a }
diff --git a/climb.cabal b/climb.cabal
--- a/climb.cabal
+++ b/climb.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.31.2.
+-- This file has been generated from package.yaml by hpack version 0.33.0.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: f959e3804f6a76af277dfee45863cf2b2521ec7733ce877dac7398aa36e9438b
+-- hash: e47ca468edac8fb8de27be29aa1586accddc79a5cae5dd00f6ce8565478032b1
 
 name:           climb
-version:        0.3.1
+version:        0.3.2
 synopsis:       Building blocks for a GHCi-like REPL with colon-commands
 description:    Please see the README on GitHub at <https://github.com/ejconlon/climb#readme>
 category:       User Interfaces
@@ -36,13 +36,13 @@
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints -fno-warn-unused-top-binds
   build-depends:
       base >=4.12 && <5
-    , bytestring >=0.10
-    , containers >=0.6
-    , exceptions >=0.10
-    , linenoise >=0.3.1
-    , mtl >=2.2
-    , text >=1.2
-    , unliftio-core >=0.1
+    , bytestring >=0.10 && <1
+    , containers >=0.6 && <1
+    , exceptions >=0.10 && <1
+    , linenoise >=0.3.2 && <1
+    , mtl >=2.2 && <3
+    , text >=1.2 && <2
+    , unliftio-core >=0.1 && <1
   default-language: Haskell2010
 
 executable climb-demo
@@ -54,12 +54,12 @@
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints -fno-warn-unused-top-binds -threaded -rtsopts -with-rtsopts=-N
   build-depends:
       base >=4.12 && <5
-    , bytestring >=0.10
+    , bytestring >=0.10 && <1
     , climb
-    , containers >=0.6
-    , exceptions >=0.10
-    , linenoise >=0.3.1
-    , mtl >=2.2
-    , text >=1.2
-    , unliftio-core >=0.1
+    , containers >=0.6 && <1
+    , exceptions >=0.10 && <1
+    , linenoise >=0.3.2 && <1
+    , mtl >=2.2 && <3
+    , text >=1.2 && <2
+    , unliftio-core >=0.1 && <1
   default-language: Haskell2010
diff --git a/src/Climb.hs b/src/Climb.hs
--- a/src/Climb.hs
+++ b/src/Climb.hs
@@ -21,12 +21,12 @@
 import Control.Monad.IO.Class (MonadIO (..))
 import Control.Monad.IO.Unlift (MonadUnliftIO)
 import Data.Foldable (for_)
-import Data.Typeable (Typeable)
 import Data.Map.Strict (Map)
 import qualified Data.Map.Strict as Map
 import Data.Text (Text)
 import qualified Data.Text as Text
 import qualified Data.Text.IO as TIO
+import Data.Typeable (Typeable)
 import Linenoise.Repl (ReplDirective (..), replM)
 
 -- | A 'Command' takes some input, performs some effect, and returns a directive (continue or quit).
@@ -88,7 +88,7 @@
     ]
 
 outerCommand :: MonadThrow m => OptionCommands m -> Command m -> Command m
-outerCommand opts exec = \input ->
+outerCommand opts exec input =
   case Text.uncons input of
     Just (':', rest) -> do
       let (name, subInput) = Text.break (==' ') rest
