diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Revision history for taskwarrior
 
+## 0.1.2.3
+
+* Documentation improvements
+* Loosen some dependency bounds
+
 ## 0.1.2.2
 
 * Add `StrictData` pragma for better performance.
diff --git a/src/Taskwarrior/IO.hs b/src/Taskwarrior/IO.hs
--- a/src/Taskwarrior/IO.hs
+++ b/src/Taskwarrior/IO.hs
@@ -33,7 +33,7 @@
 import           Data.UUID                      ( UUID )
 import qualified Data.UUID                     as UUID
 
--- | Uses `task export` with a given filter like `["description:Milk", "+PENDING"]`.
+-- | Uses @task export@ with a given filter like @["description:Milk", "+PENDING"]@.
 getTasks :: [Text] -> IO [Task]
 getTasks args =
   withCreateProcess
@@ -49,7 +49,7 @@
         input <- LBS.hGetContents stdout
         either fail return . Aeson.eitherDecode $ input
 
--- | Gives all uuids matching the given filter (e.g. `["description:Milk", "+PENDING"]`). This calls the `task` binary.
+-- | Gives all uuids matching the given filter (e.g. @["description:Milk", "+PENDING"]@). This calls the @task@ binary.
 getUUIDs :: [Text] -> IO [UUID]
 getUUIDs args =
   withCreateProcess
@@ -67,7 +67,7 @@
           . LBS.lines
           $ input
 
--- | Uses task import to save the given tasks.
+-- | Uses @task import@ to save the given tasks.
 saveTasks :: [Task] -> IO ()
 saveTasks tasks =
   withCreateProcess ((proc "task" ["import"]) { std_in = CreatePipe })
@@ -80,11 +80,11 @@
         exitCode <- waitForProcess process
         when (exitCode /= ExitSuccess) $ fail . show $ exitCode
 
--- | This will create a Task. I runs in IO to create a UUID and get the currentTime. This will not save the Task to taskwarrior.
+-- | This will create a @'Task'@. I runs in @'IO'@ to create a @'UUID'@ and get the current time. This will not save the @'Task'@ to taskwarrior.
 -- If you want to create a task, with certain fields and save it, you could do that like this:
 --
--- > newTask <- createTask "Buy Milk"
--- > saveTasks [newTask { tags = ["groceries"] }]
+-- > newTask <- 'createTask' "Buy Milk"
+-- > 'saveTasks' [newTask { 'tags' = ["groceries"] }]
 createTask :: Text -> IO Task
 createTask description = do
   uuid  <- getStdRandom random
diff --git a/taskwarrior.cabal b/taskwarrior.cabal
--- a/taskwarrior.cabal
+++ b/taskwarrior.cabal
@@ -4,7 +4,7 @@
 -- PVP summary:     +-+------- breaking API changes
 --                  | | +----- non-breaking API additions
 --                  | | | +--- code changes with no API change
-version: 0.1.2.2
+version: 0.1.2.3
 synopsis:           Types and aeson instances for taskwarrior tasks
 description:
   Types and aeson instances for the https://taskwarrior.org task import/export feature
@@ -44,8 +44,8 @@
     , bytestring            ^>=0.10.8.2
     , process               ^>=1.6.5.0
     , random                ^>=1.1
-    , text                  ^>=1.2.3.1
-    , time                  >=1.8.0.2  && <1.10
+    , text                  ^>=1.2.3.0
+    , time                  >=1.8.0.2  && <1.11
     , unordered-containers  ^>=0.2.9.0
     , uuid                  ^>=1.3.13
 
@@ -63,7 +63,7 @@
     , aeson
     , base
     , hspec                 ^>=2.7.1
-    , QuickCheck            ^>=2.13.2
+    , QuickCheck            >=2.13.2 && <2.15
     , quickcheck-instances  ^>=0.3.22
     , taskwarrior
     , text
