diff --git a/src/Data/Constraint/Trivial.hs b/src/Data/Constraint/Trivial.hs
--- a/src/Data/Constraint/Trivial.hs
+++ b/src/Data/Constraint/Trivial.hs
@@ -4,23 +4,33 @@
 -- License     :  GPL v3 (see LICENSE)
 -- Maintainer  :  (@) jsagemue $ uni-koeln.de
 --
-{-# LANGUAGE ConstraintKinds       #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PolyKinds             #-}
+{-# LANGUAGE ConstraintKinds         #-}
+{-# LANGUAGE DataKinds               #-}
+{-# LANGUAGE FlexibleInstances       #-}
+{-# LANGUAGE MultiParamTypeClasses   #-}
+{-# LANGUAGE PolyKinds               #-}
+{-# LANGUAGE TypeOperators           #-}
+{-# LANGUAGE UndecidableInstances    #-}
+{-# LANGUAGE UndecidableSuperClasses #-}
 
 module Data.Constraint.Trivial (
-            Unconstrained, Impossible
-          , Unconstrained2, Impossible2
-          , Unconstrained3, Impossible3
-          , Unconstrained4, Impossible4
-          , Unconstrained5, Impossible5
-          , Unconstrained6, Impossible6
-          , Unconstrained7, Impossible7
-          , Unconstrained8, Impossible8
-          , Unconstrained9, Impossible9
+            Unconstrained, Impossible(..)
+          , Unconstrained2, Impossible2(..)
+          , Unconstrained3, Impossible3(..)
+          , Unconstrained4, Impossible4(..)
+          , Unconstrained5, Impossible5(..)
+          , Unconstrained6, Impossible6(..)
+          , Unconstrained7, Impossible7(..)
+          , Unconstrained8, Impossible8(..)
+          , Unconstrained9, Impossible9(..)
           ) where
 
+import           GHC.TypeLits
+
+type Disallowed t = 'Text "All instances of "
+              ':<>: 'Text t
+              ':<>: 'Text " are disallowed."
+
 -- | Intended to be used as an argument for some type constructor which expects kind
 --   @k -> Constraint@, when you do not actually wish to constrain anything with it.
 --
@@ -33,9 +43,16 @@
 -- | This constraint can /never/ be fulfilled. Might be useful e.g. as a default
 --   for a class-associated constraint; this basically disables any method with
 --   that constraint (so it can safely be left 'undefined').
-type Impossible t = HiddenEmptyClass t
-
-class HiddenEmptyClass t
+class TypeError (Disallowed "Impossible") => Impossible t where
+    -- | Ex falso quodlibet.  If you have @'Impossible' t@, you can do
+    -- anything.
+    --
+    -- Might be useful e.g. if you are inside a function wiht an
+    -- @'Impossible' t =>@ constraint, and you want to do something
+    -- impossible, like the constraint implies.
+    --
+    -- Analogous to 'Data.Void.absurd'.
+    absurdible :: proxy t -> a
 
 
 -- | Like 'Unconstrained', but with kind signature @k -> k -> Constraint@
@@ -43,54 +60,62 @@
 class Unconstrained2 t s
 instance Unconstrained2 t s
 
-type Impossible2 t s = HiddenEmptyClass2 t s
-class HiddenEmptyClass2 t s
+class TypeError (Disallowed "Impossible2") => Impossible2 t s where
+    absurdible2 :: proxy t -> proxy s -> a
 
 
 class Unconstrained3 t s r
 instance Unconstrained3 t s r
 
-type Impossible3 t s r = HiddenEmptyClass3 t s r
-class HiddenEmptyClass3 t s r
+class TypeError (Disallowed "Impossible3") => Impossible3 t s r where
+    absurdible3 :: proxy t -> proxy s -> proxy r -> a
 
 
 class Unconstrained4 t s r q
 instance Unconstrained4 t s r q
 
-type Impossible4 t s r q = HiddenEmptyClass4 t s r q
-class HiddenEmptyClass4 t s r q
+class TypeError (Disallowed "Impossible4") => Impossible4 t s r q where
+    absurdible4 :: proxy t -> proxy s -> proxy r -> proxy q -> a
 
 
 class Unconstrained5 t s r q p
 instance Unconstrained5 t s r q p
 
-type Impossible5 t s r q p = HiddenEmptyClass5 t s r q p
-class HiddenEmptyClass5 t s r q p
+class TypeError (Disallowed "Impossible5") => Impossible5 t s r q p where
+    absurdible5 :: proxy t -> proxy s -> proxy r -> proxy q -> proxy p -> a
 
 
 class Unconstrained6 t s r q p o
 instance Unconstrained6 t s r q p o
 
-type Impossible6 t s r q p o = HiddenEmptyClass6 t s r q p o
-class HiddenEmptyClass6 t s r q p o
+class TypeError (Disallowed "Impossible6") => Impossible6 t s r q p o where
+    absurdible6 :: proxy t -> proxy s -> proxy r
+                -> proxy q -> proxy p -> proxy o
+                -> a
 
 
 class Unconstrained7 t s r q p o n
 instance Unconstrained7 t s r q p o n
 
-type Impossible7 t s r q p o n = HiddenEmptyClass7 t s r q p o n
-class HiddenEmptyClass7 t s r q p o n
+class TypeError (Disallowed "Impossible7") => Impossible7 t s r q p o n where
+    absurdible7 :: proxy t -> proxy s -> proxy r -> proxy q
+                -> proxy p -> proxy o -> proxy n -> a
 
 
 class Unconstrained8 t s r q p o n m
 instance Unconstrained8 t s r q p o n m
 
-type Impossible8 t s r q p o n m = HiddenEmptyClass8 t s r q p o n m
-class HiddenEmptyClass8 t s r q p o n m
+class TypeError (Disallowed "Impossible8") => Impossible8 t s r q p o n m where
+    absurdible8 :: proxy t -> proxy s -> proxy r -> proxy q
+                -> proxy p -> proxy o -> proxy n -> proxy m
+                -> a
 
 
 class Unconstrained9 t s r q p o n m l
 instance Unconstrained9 t s r q p o n m l
 
-type Impossible9 t s r q p o n m l = HiddenEmptyClass9 t s r q p o n m l
-class HiddenEmptyClass9 t s r q p o n m l
+class TypeError (Disallowed "Impossible9") => Impossible9 t s r q p o n m l where
+    absurdible9 :: proxy t -> proxy s -> proxy r
+                -> proxy q -> proxy p -> proxy o
+                -> proxy n -> proxy m -> proxy l
+                -> a
diff --git a/trivial-constraint.cabal b/trivial-constraint.cabal
--- a/trivial-constraint.cabal
+++ b/trivial-constraint.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                trivial-constraint
-version:             0.5.0.0
+version:             0.5.1.0
 synopsis:            Constraints that any type, resp. no type fulfills
 description:         Since GHC 7.4, constraints are first-class: we have the constraint kind, and thus type-classes have a kind such as @* -> Constraint@.
                      .
@@ -19,13 +19,17 @@
 license:             GPL-3
 license-file:        LICENSE
 author:              Justus Sagemüller
-maintainer:          sagemuej@smail.uni-koeln.de
+maintainer:          jsag@hvl.no
 homepage:            https://github.com/leftaroundabout/trivial-constraint
 -- copyright:           
 category:            Constraints
 build-type:          Simple
 -- extra-source-files:  
 cabal-version:       >=1.10
+
+source-repository head
+  type: git
+  location: git://github.com/leftaroundabout/trivial-constraint.git
 
 library
   exposed-modules:     Data.Constraint.Trivial
