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
@@ -1,13 +1,24 @@
 -- |
 -- Module      :  Data.Constraint.Trivial
--- Copyright   :  (c) 2014 Justus Sagemüller
+-- Copyright   :  (c) 2014-2016 Justus Sagemüller
 -- License     :  GPL v3 (see LICENSE)
--- Maintainer  :  (@) sagemuej $ smail.uni-koeln.de
+-- Maintainer  :  (@) jsagemue $ uni-koeln.de
 -- 
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE ConstraintKinds   #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE ConstraintKinds       #-}
 
-module Data.Constraint.Trivial (Unconstrained, Impossible) where
+module Data.Constraint.Trivial (
+            Unconstrained, Impossible
+          , Unconstrained2, Impossible2
+          , Unconstrained3, Impossible3
+          , Unconstrained4, Impossible4
+          , Unconstrained5, Impossible5
+          , Unconstrained6, Impossible6
+          , Unconstrained7, Impossible7
+          , Unconstrained8, Impossible8
+          , Unconstrained9, Impossible9
+          ) where
 
 -- | Intended to be used as an argument for some type constructor which expects kind
 --   @* -> Constraint@, when you do not actually wish to constrain anything with it.
@@ -25,3 +36,60 @@
 
 class HiddenEmptyClass t
 
+
+-- | Like 'Unconstrained', but with kind signature @* -> * -> Constraint@
+--   (two unconstrained types).
+class Unconstrained2 t s
+instance Unconstrained2 t s
+
+type Impossible2 t s = HiddenEmptyClass2 t s
+class HiddenEmptyClass2 t s
+
+
+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 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 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 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 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 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 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
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.3.0.0
+version:             0.4.0.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@.
                      .
