diff --git a/core-data.cabal b/core-data.cabal
--- a/core-data.cabal
+++ b/core-data.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           core-data
-version:        0.3.0.2
+version:        0.3.1.1
 synopsis:       Convenience wrappers around common data structures and encodings
 description:    Wrappers around common data structures and encodings.
                 .
@@ -16,12 +16,12 @@
                 <https://github.com/aesiniath/unbeliever/blob/master/README.markdown README>
                 on GitHub.
 category:       System
-stability:      experimental
+stability:      stable
 homepage:       https://github.com/aesiniath/unbeliever#readme
 bug-reports:    https://github.com/aesiniath/unbeliever/issues
 author:         Andrew Cowie <istathar@gmail.com>
 maintainer:     Andrew Cowie <istathar@gmail.com>
-copyright:      © 2018-2021 Athae Eredh Siniath and Others
+copyright:      © 2018-2022 Athae Eredh Siniath and Others
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
diff --git a/lib/Core/Data/Structures.hs b/lib/Core/Data/Structures.hs
--- a/lib/Core/Data/Structures.hs
+++ b/lib/Core/Data/Structures.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GeneralisedNewtypeDeriving #-}
 {-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-orphans -Wno-redundant-constraints #-}
 
 {- |
 Convenience wrappers around dictionary and collection types and tools
@@ -38,10 +38,12 @@
 
 import Core.Text.Bytes (Bytes)
 import Core.Text.Rope (Rope)
+import Data.Bifoldable (Bifoldable)
 import qualified Data.ByteString as B (ByteString)
 import qualified Data.HashMap.Strict as HashMap
 import qualified Data.HashSet as HashSet
 import Data.Hashable (Hashable)
+import Data.Kind (Type)
 import qualified Data.Map.Strict as OrdMap
 import qualified Data.Set as OrdSet
 import qualified Data.Text as T (Text)
@@ -71,7 +73,7 @@
 the keys' 'Ord' instance)
 -}
 newtype Map κ ν = Map (HashMap.HashMap κ ν)
-    deriving (Show, Eq)
+    deriving (Show, Eq, Bifoldable)
 
 unMap :: Map κ ν -> HashMap.HashMap κ ν
 unMap (Map u) = u
@@ -192,8 +194,8 @@
 -- Many thanks for an elegant solution to the problem.
 --
 class Dictionary α where
-    type K α :: *
-    type V α :: *
+    type K α :: Type
+    type V α :: Type
     fromMap :: Map (K α) (V α) -> α
     intoMap :: α -> Map (K α) (V α)
 
@@ -301,7 +303,7 @@
 instance for @[ε]@ lists described above.
 -}
 class Collection α where
-    type E α :: *
+    type E α :: Type
     fromSet :: Set (E α) -> α
     intoSet :: α -> Set (E α)
 
