diff --git a/numhask-space.cabal b/numhask-space.cabal
--- a/numhask-space.cabal
+++ b/numhask-space.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               numhask-space
-version:            0.10.0.0
+version:            0.10.0.1
 synopsis:           Numerical spaces.
 description:
   @numhask-space@ provides support for spaces where [space](https://en.wikipedia.org/wiki/Space_(mathematics\)) is defined as a set of numbers with a lower and upper bound.
@@ -21,7 +21,8 @@
 license:            BSD-3-Clause
 license-file:       LICENSE
 build-type:         Simple
-tested-with:        GHC ==8.8.4 || ==8.10.7 || ==9.2.1
+tested-with:
+  GHC ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.2.5 || ==9.4.4
 extra-source-files: ChangeLog.md
 
 source-repository head
@@ -32,8 +33,7 @@
   hs-source-dirs:     src
   ghc-options:
     -Wall -Wcompat -Wincomplete-record-updates
-    -Wincomplete-uni-patterns -Wredundant-constraints -fwrite-ide-info
-    -hiedir=.hie
+    -Wincomplete-uni-patterns -Wredundant-constraints
 
   default-extensions:
   build-depends:
@@ -41,13 +41,13 @@
     , base           >=4.7     && <5
     , containers     ^>=0.6
     , distributive   >=0.2.2   && <1
-    , numhask        ^>=0.10.0
+    , numhask        >=0.10.0  && <0.11
     , random         ^>=1.2
     , semigroupoids  >=5       && <5.4
     , tdigest        ^>=0.2.1
-    , text           >=1.2.3.1 && <2
-    , time           >=1.9.1   && <1.12
-    , vector         ^>=0.12
+    , text           >=1.2.3.1 && <3
+    , time           >=1.9.1   && <1.13
+    , vector         >=0.12    && <0.14
 
   exposed-modules:
     NumHask.Space
@@ -60,3 +60,12 @@
 
   other-modules:
   default-language:   Haskell2010
+
+test-suite doctests
+  type:             exitcode-stdio-1.0
+  main-is:          doctests.hs
+  hs-source-dirs:   test
+  default-language: Haskell2010
+  build-depends:
+    , base
+    , QuickCheck
diff --git a/src/NumHask/Space/Point.hs b/src/NumHask/Space/Point.hs
--- a/src/NumHask/Space/Point.hs
+++ b/src/NumHask/Space/Point.hs
@@ -102,7 +102,7 @@
 instance (Semigroup a) => Semigroup (Point a) where
   (Point a0 b0) <> (Point a1 b1) = Point (a0 <> a1) (b0 <> b1)
 
-instance (Semigroup a, Monoid a) => Monoid (Point a) where
+instance (Monoid a) => Monoid (Point a) where
   mempty = Point mempty mempty
 
   mappend = (<>)
@@ -258,8 +258,10 @@
   let dy = y1 - y2
       dx = x2 - x1
       d = sqrt (dx * dx + dy * dy)
-   in dy `seq` dx `seq` d
-        `seq` \(Point x y) -> (x - x1) * dy / d + (y - y1) * dx / d
+   in dy `seq`
+        dx `seq`
+          d `seq`
+            \(Point x y) -> (x - x1) * dy / d + (y - y1) * dx / d
 
 -- | Return the point on the line closest to the given point.
 closestPoint :: (Field a) => Line a -> Point a -> Point a
diff --git a/src/NumHask/Space/Range.hs b/src/NumHask/Space/Range.hs
--- a/src/NumHask/Space/Range.hs
+++ b/src/NumHask/Space/Range.hs
@@ -6,6 +6,7 @@
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE UndecidableInstances #-}
 {-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -Wno-redundant-constraints #-}
 
 -- | A Space containing numerical elements
 module NumHask.Space.Range
@@ -115,7 +116,7 @@
 instance (Ord a) => MeetSemiLattice (Range a) where
   (/\) = liftR2 max
 
-instance (Eq a, Ord a) => Space (Range a) where
+instance (Ord a) => Space (Range a) where
   type Element (Range a) = a
 
   lower (Range l _) = l
@@ -143,17 +144,17 @@
       ps = grid OuterPos r n
 
 -- | Monoid based on convex hull union
-instance (Eq a, Ord a) => Semigroup (Range a) where
+instance (Ord a) => Semigroup (Range a) where
   (<>) a b = getUnion (Union a <> Union b)
 
-instance (Additive a, Eq a, Ord a) => Additive (Range a) where
+instance (Additive a, Ord a) => Additive (Range a) where
   (Range l u) + (Range l' u') = unsafeSpace1 [l + l', u + u']
   zero = Range zero zero
 
-instance (Subtractive a, Eq a, Ord a) => Subtractive (Range a) where
+instance (Subtractive a, Ord a) => Subtractive (Range a) where
   negate (Range l u) = negate u ... negate l
 
-instance (Field a, Eq a, Ord a) => Multiplicative (Range a) where
+instance (Field a, Ord a) => Multiplicative (Range a) where
   a * b = bool (Range (m - r / (one + one)) (m + r / (one + one))) zero (a == zero || b == zero)
     where
       m = mid a + mid b
@@ -167,7 +168,7 @@
       m = mid a
       r = width a
 
-instance (Field a, Subtractive a, Eq a, Ord a) => Signed (Range a) where
+instance (Field a, Ord a) => Signed (Range a) where
   sign (Range l u) = bool (negate one) one (u >= l)
   abs (Range l u) = bool (u ... l) (l ... u) (u >= l)
 
diff --git a/src/NumHask/Space/Time.hs b/src/NumHask/Space/Time.hs
--- a/src/NumHask/Space/Time.hs
+++ b/src/NumHask/Space/Time.hs
@@ -9,8 +9,7 @@
 
 -- | data algorithms related to time (as a Space)
 module NumHask.Space.Time
-  ( parseUTCTime,
-    TimeGrain (..),
+  ( TimeGrain (..),
     floorGrain,
     ceilingGrain,
     addGrain,
@@ -44,14 +43,6 @@
 --
 -- > :set -XOverloadedStrings
 
--- | parse text as per iso8601
---
--- >>> parseUTCTime (pack "2017-12-05")
--- Just 2017-12-05 00:00:00 UTC
-parseUTCTime :: Text -> Maybe UTCTime
-parseUTCTime =
-  parseTimeM False defaultTimeLocale (iso8601DateFormat Nothing) . unpack
-
 -- | a step in time
 data TimeGrain
   = Years Integer
@@ -270,7 +261,7 @@
   | x > 3 = "%d/%m/%y %R"
   | otherwise = "%R"
 autoFormat (Minutes _) = "%R"
-autoFormat (Seconds _) = "%R%Q"
+autoFormat (Seconds _) = "%T%Q"
 
 laterTimes :: [(Int, a)] -> [(Int, a)]
 laterTimes [] = []
diff --git a/test/doctests.hs b/test/doctests.hs
new file mode 100644
--- /dev/null
+++ b/test/doctests.hs
@@ -0,0 +1,8 @@
+module Main where
+
+main :: IO ()
+main = do
+  putStrLn "This test-suite exists only to add dependencies"
+  putStrLn "To run doctests: "
+  putStrLn "    cabal build all --enable-tests"
+  putStrLn "    cabal-docspec"
