diff --git a/Data/Enum/Set.hs b/Data/Enum/Set.hs
--- a/Data/Enum/Set.hs
+++ b/Data/Enum/Set.hs
@@ -127,7 +127,8 @@
   , toRaw
   ) where
 
-import Prelude hiding (all, any, filter, foldl, foldl1, foldMap, foldr, foldr1, map, maximum, minimum, null, traverse)
+import Prelude hiding (Foldable(..), all, any, filter, map, traverse)
+import Data.Foldable (Foldable)
 
 import Data.Bits
 
diff --git a/Data/Enum/Set/Base.hs b/Data/Enum/Set/Base.hs
--- a/Data/Enum/Set/Base.hs
+++ b/Data/Enum/Set/Base.hs
@@ -125,7 +125,8 @@
 import qualified GHC.Exts
 import qualified Data.Foldable as F
 
-import Prelude hiding (all, any, filter, foldl, foldl1, foldMap, foldr, foldr1, map, maximum, minimum, null, traverse)
+import Prelude hiding (Foldable(..), all, any, filter, map, traverse)
+import Data.Foldable (Foldable)
 
 import Control.Applicative (liftA2)
 import Control.DeepSeq (NFData)
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,2 +1,36 @@
 # bitwise-enum
-Bitwise operations on bounded enumerations.
+
+Efficient sets over bounded enumerations, using bitwise operations based on [containers](https://hackage.haskell.org/package/containers-0.6.0.1/docs/src/Data.IntSet.Internal.html) and [EdisonCore](https://hackage.haskell.org/package/EdisonCore-1.3.2.1/docs/src/Data-Edison-Coll-EnumSet.html). All operations apart from folds are constant-time. In many cases, the compiler may use constant folding to optimize `EnumSet`s away entirely. For example, in the following code:
+
+```hs
+import Data.Enum.Set as E
+
+data Foo = A | B | C | D | E | F | G | H deriving (Bounded, Enum, Eq, Ord)
+
+instance E.AsEnumSet Foo
+
+addFoos :: E.EnumSet Foo -> E.EnumSet Foo
+addFoos = E.delete A . E.insert B
+
+bar :: E.EnumSet Foo
+bar = addFoos $ E.fromFoldable [A, C, E]
+
+barHasA :: Bool
+barHasA = E.member A bar
+```
+
+With  -O  or  -O2 ,  `bar`  will compile to  `GHC.Types.W# 22##`  and  `barHasA`  will compile to  `GHC.Types.False`.
+
+By default, `Word`s are used as the representation. Other representations may be chosen in the class instance:
+
+```hs
+{-# LANGUAGE TypeFamilies #-}
+
+import Data.Enum.Set as E
+import Data.Word (Word64)
+
+data Foo = A | B | C | D | E | F | G | H deriving (Bounded, Enum, Eq, Ord, Show)
+
+instance E.AsEnumSet Foo where
+    type EnumSetRep Foo = Word64
+```
diff --git a/bitwise-enum.cabal b/bitwise-enum.cabal
--- a/bitwise-enum.cabal
+++ b/bitwise-enum.cabal
@@ -1,13 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.33.0.
+-- This file has been generated from package.yaml by hpack version 0.35.2.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: 5fdbdf5677b7ae0a0c640e45ae5ba0dc5db8950240db416cd566fb5f90d288d2
 
 name:           bitwise-enum
-version:        1.0.1.0
+version:        1.0.1.1
 synopsis:       Bitwise operations on bounded enumerations
 description:    Bitwise operations on bounded enumerations.
                 .
@@ -38,12 +36,12 @@
       ./
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-uni-patterns -Wincomplete-record-updates -ferror-spans -funbox-small-strict-fields -O2
   build-depends:
-      aeson >=0.11 && <1.6
+      aeson >=0.11 && <2.3
     , array >=0.5.1 && <0.6
     , base >=4.5 && <5
-    , deepseq >=1.1 && <1.5
+    , deepseq >=1.1 && <1.6
     , mono-traversable >=1.0.12 && <1.1
-    , vector >=0.11 && <0.13
+    , vector >=0.11 && <0.14
   default-language: Haskell2010
 
 test-suite enumset-test-suite
@@ -56,15 +54,15 @@
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-uni-patterns -Wincomplete-record-updates -ferror-spans -funbox-small-strict-fields
   build-depends:
       QuickCheck >=2.13.2
-    , aeson >=0.11 && <1.6
+    , aeson >=0.11 && <2.3
     , array >=0.5.1 && <0.6
     , base
     , bitwise-enum
-    , deepseq >=1.1 && <1.5
+    , deepseq >=1.1 && <1.6
     , mono-traversable >=1.0.12 && <1.1
     , test-framework >=0.8.2.0
     , test-framework-quickcheck2 >=0.3.0.5
-    , vector >=0.11 && <0.13
+    , vector >=0.11 && <0.14
   default-language: Haskell2010
 
 benchmark enumset-benchmarks
@@ -76,13 +74,13 @@
       benchmarks
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-uni-patterns -Wincomplete-record-updates -ferror-spans -funbox-small-strict-fields -rtsopts -threaded -with-rtsopts=-N -O2
   build-depends:
-      aeson >=0.11 && <1.6
+      aeson >=0.11 && <2.3
     , array >=0.5.1 && <0.6
     , base
     , bitwise-enum
-    , deepseq >=1.1 && <1.5
+    , deepseq >=1.1 && <1.6
     , gauge >=0.2.5
     , mono-traversable >=1.0.12 && <1.1
-    , vector >=0.11 && <0.13
+    , vector >=0.11 && <0.14
     , wide-word >=0.1.0.9
   default-language: Haskell2010
diff --git a/package.yaml b/package.yaml
new file mode 100644
--- /dev/null
+++ b/package.yaml
@@ -0,0 +1,64 @@
+name:         bitwise-enum
+version:      1.0.1.1
+github:       "jnbooth/bitwise-enum"
+homepage:     https://github.com/jnbooth/bitwise-enum
+bug-reports:  https://github.com/jnbooth/bitwise-enum/issues
+author:       "Joshua Booth <joshua.n.booth@gmail.com>"
+maintainer:   "Joshua Booth <joshua.n.booth@gmail.com>"
+license:      BSD3
+license-file: LICENSE
+category:     Data, Data Structures, Foreign
+synopsis:     "Bitwise operations on bounded enumerations"
+description:  |
+    Bitwise operations on bounded enumerations.
+    .
+    ["Data.Enum.Set"] Constant-time sets using bit flags.
+    .
+    ["Data.Enum.Memo"] Constant-time lookup memoization for functions on enumerated types.
+
+dependencies:
+  - aeson >=0.11 && <2.3
+  - array >=0.5.1 && <0.6
+  - base >=4.5 && <5
+  - deepseq >=1.1 && <1.6
+  - mono-traversable >=1.0.12 && <1.1
+  - vector >=0.11 && <0.14
+
+ghc-options:
+  - -Wall
+  - -Wcompat
+  - -Widentities
+  - -Wincomplete-uni-patterns
+  - -Wincomplete-record-updates
+  - -ferror-spans
+  - -funbox-small-strict-fields
+
+library:
+  source-dirs: ./
+  ghc-options: -O2
+
+benchmarks:
+  enumset-benchmarks:
+    main: EnumSet.hs
+    source-dirs: benchmarks
+    dependencies:
+      - base
+      - bitwise-enum
+      - gauge >=0.2.5
+      - wide-word >=0.1.0.9
+    ghc-options:
+      - -rtsopts
+      - -threaded
+      - -with-rtsopts=-N
+      - -O2
+
+tests:
+  enumset-test-suite:
+    main: set-properties.hs
+    source-dirs: tests
+    dependencies:
+      - base
+      - bitwise-enum
+      - QuickCheck >=2.13.2
+      - test-framework >=0.8.2.0
+      - test-framework-quickcheck2 >=0.3.0.5
diff --git a/stack.yaml b/stack.yaml
new file mode 100644
--- /dev/null
+++ b/stack.yaml
@@ -0,0 +1,1 @@
+resolver: lts-21.5
