diff --git a/finite.cabal b/finite.cabal
--- a/finite.cabal
+++ b/finite.cabal
@@ -1,5 +1,5 @@
 name:                finite
-version:             1.4.1.2
+version:             1.4.1.4
 synopsis:            Finite ranges via types
 description:         A framework for capturing finite ranges with
                      types, where the sizes of the ranges are not
@@ -34,12 +34,12 @@
     -fignore-asserts
 
   build-depends:
-      base >=4.7 && <4.15
+      base >=4.7 && <4.22
     , array >=0.5 && <0.6
-    , containers >=0.5 && <0.7
-    , hashable >=1.2
-    , template-haskell >=2.11
-    , QuickCheck
+    , containers >=0.5 && <0.8
+    , hashable >=1.2 && <1.6
+    , template-haskell >=2.11 && <2.24
+    , QuickCheck >=2.10 && <=2.16
 
   exposed-modules:
     Finite
@@ -75,10 +75,10 @@
     src/test
 
   build-depends:
-      base >=4.7 && <4.15
-    , hashable >=1.2
-    , Cabal >= 2.4
-    , QuickCheck
+      base >=4.7 && <4.22
+    , hashable >=1.2 && <1.6
+    , Cabal >=2.4 && < 3.15
+    , QuickCheck >=2.10 && <=2.16
     , finite
 
   default-language:
diff --git a/src/lib/Finite/PowerSet.hs b/src/lib/Finite/PowerSet.hs
--- a/src/lib/Finite/PowerSet.hs
+++ b/src/lib/Finite/PowerSet.hs
@@ -28,8 +28,10 @@
 
 import Finite.Type
   ( T
+  , (#)
   , (\#)
   , (#<<)
+  , v2t
   )
 
 import Finite.Class
@@ -84,7 +86,9 @@
           powsum (a,2*p,n-1,xs)
 
   value n =
-    let bs = map (value . (+ (offset #<< head bs))) $ bin n
+    let ty :: T [a] -> T a
+        ty _ = (#)
+        bs = map (value . (+ (offset $ ty $ v2t bs))) $ bin n
     in assert (n >= 0 && n < (elements #<< bs)) bs
 
   offset = offset . ((\#) :: T (PowerSet a) -> T a)
