diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,14 @@
+# Version 0.1.2
+
+* Export the `Some{1,2,3,4}` constructors.
+
+* Make all the fields in `Some{1,2,3,4}` strict.
+
+* Relax upper bound on `base`, `singletons`, `constraints`.
+
+* Re-export `Dict(Dict)` from `constraints`.
+
+
 # Version 0.1.1
 
 * Relax upper bound on `singletons` dependency.
diff --git a/LICENSE.txt b/LICENSE.txt
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,4 +1,4 @@
-Copyright (c) 2015, Renzo Carbonara
+Copyright (c) 2015-2016, Renzo Carbonara
 
 All rights reserved.
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -30,8 +30,6 @@
 
 As a motivation, let's consider the following example:
 
-> TODO: check language extensions needed for the following example.
-
 ```haskell
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE DataKinds #-}
@@ -52,13 +50,12 @@
 `Receptacle` can describe three types of receptacles (`Vase`, `Glass` and
 `Barrel`), while at the same time being able to indicate, at the type level,
 whether the size of the receptacle is `Big` or `Small`. Additionally, we've
-provided `Show` instances for `Receptacle` (which could have been derived
-automatically, too).
+provided `Show` instances for `Receptacle`. 
 
 Now, if we want to put `Receptacle`s in a container, for example in `[]`, we can
-do so only as long as the `Receptacle` type is fully applied. That is, we can
+do so only as long as the `Receptacle` type is fully applied and monomorphic. That is, we can
 have `[Receptacle 'Small]` and `[Receptacle 'Big]`, but we can't have
-`[Receptacle]`. So, if we want to have `Receptacle`s of different sizes in a
+`[Receptacle]` nor `[forall a. Receptacle a]`. So, if we want to have `Receptacle`s of different sizes in a
 container like `[]`, we need a different solution.
 
 At this point we need to ask ourselves why we need to put `Receptacle`s of
diff --git a/exinst.cabal b/exinst.cabal
--- a/exinst.cabal
+++ b/exinst.cabal
@@ -1,8 +1,8 @@
 name:                exinst
-version:             0.1.1
+version:             0.1.2
 author:              Renzo Carbonara
 maintainer:          renzoλcarbonara.com.ar
-copyright:           Renzo Carbonara 2015
+copyright:           Renzo Carbonara 2015-2016
 license:             BSD3
 license-file:        LICENSE.txt
 extra-source-files:  README.md CHANGELOG.md
@@ -20,11 +20,9 @@
   exposed-modules:
       Exinst.Singletons
       Exinst.Instances.Base
-  other-modules:
-      Exinst.Singletons.Internal
   build-depends:
-      base >=4.7 && <4.9
-    , constraints >=0.4 && <0.5
-    , singletons >=1.1 && <2.1
+      base >=4.7 && <5.0
+    , constraints >=0.4 && <0.9
+    , singletons >=1.1 && <2.2
   ghcjs-options: -Wall -O3
   ghc-options: -Wall -O2
diff --git a/src/lib/Exinst/Instances/Base.hs b/src/lib/Exinst/Instances/Base.hs
--- a/src/lib/Exinst/Instances/Base.hs
+++ b/src/lib/Exinst/Instances/Base.hs
@@ -6,19 +6,21 @@
 
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
--- | This module exports 'Show', 'Eq' and 'Ord' instances for 'Some1',
--- 'Some2', 'Some3' and 'Some4' from "Exinst.Singletons", provided situable
+-- | This module exports 'Show', 'Eq' and 'Ord' instances for 'Exinst.Some1',
+-- 'Exinst.Some2', 'Exinst.Some3' and 'Exinst.Some4' from "Exinst.Singletons", provided situable
 -- 'Dict1', 'Dict2', 'Dict3' and 'Dict4' instances are available.
 --
 -- See the README file for more general documentation: https://hackage.haskell.org/package/exinst#readme
 module Exinst.Instances.Base () where
 
-import           Data.Constraint
-import           Data.Singletons
-import           Data.Singletons.Decide
-import           Data.Type.Equality
-import           Exinst.Singletons
-import           Prelude
+import Data.Constraint
+import Data.Singletons
+import Data.Singletons.Decide
+import Data.Type.Equality
+import Exinst.Singletons
+  hiding (Some1(..), Some2(..), Some3(..), Some4(..))
+import qualified Exinst.Singletons as Exinst
+import Prelude
 
 --------------------------------------------------------------------------------
 
@@ -35,7 +37,7 @@
   . ( SingKind ('KProxy :: KProxy k1)
     , Show (DemoteRep ('KProxy :: KProxy k1))
     , Dict1 Show f1
-    ) => Show (Some1 f1)
+    ) => Show (Exinst.Some1 f1)
   where
     {-# INLINABLE showsPrec #-}
     showsPrec n = \some1x -> withSome1Sing some1x $ \sa1 (x :: f1 a1) ->
@@ -48,7 +50,7 @@
     , Show (DemoteRep ('KProxy :: KProxy k2))
     , Show (DemoteRep ('KProxy :: KProxy k1))
     , Dict2 Show f2
-    ) => Show (Some2 f2)
+    ) => Show (Exinst.Some2 f2)
   where
     {-# INLINABLE showsPrec #-}
     showsPrec n = \some2x -> withSome2Sing some2x $ \sa2 sa1 (x :: f2 a2 a1) ->
@@ -63,7 +65,7 @@
     , Show (DemoteRep ('KProxy :: KProxy k2))
     , Show (DemoteRep ('KProxy :: KProxy k1))
     , Dict3 Show f3
-    ) => Show (Some3 f3)
+    ) => Show (Exinst.Some3 f3)
   where
     {-# INLINABLE showsPrec #-}
     showsPrec n = \some3x -> withSome3Sing some3x $ \sa3 sa2 sa1 (x :: f3 a3 a2 a1) ->
@@ -80,7 +82,7 @@
     , Show (DemoteRep ('KProxy :: KProxy k2))
     , Show (DemoteRep ('KProxy :: KProxy k1))
     , Dict4 Show f4
-    ) => Show (Some4 f4)
+    ) => Show (Exinst.Some4 f4)
   where
     {-# INLINABLE showsPrec #-}
     showsPrec n = \some4x -> withSome4Sing some4x $ \sa4 sa3 sa2 sa1 (x :: f4 a4 a3 a2 a1) ->
@@ -98,7 +100,7 @@
   . ( SingKind ('KProxy :: KProxy k1)
     , SDecide ('KProxy :: KProxy k1)
     , Dict1 Eq f1
-    ) => Eq (Some1 f1)
+    ) => Eq (Exinst.Some1 f1)
   where
     {-# INLINABLE (==) #-}
     (==) = \som1x som1y ->
@@ -115,7 +117,7 @@
     , SDecide ('KProxy :: KProxy k2)
     , SDecide ('KProxy :: KProxy k1)
     , Dict2 Eq f2
-    ) => Eq (Some2 f2)
+    ) => Eq (Exinst.Some2 f2)
   where
     {-# INLINABLE (==) #-}
     (==) = \som2x som2y ->
@@ -135,7 +137,7 @@
     , SDecide ('KProxy :: KProxy k2)
     , SDecide ('KProxy :: KProxy k1)
     , Dict3 Eq f3
-    ) => Eq (Some3 f3)
+    ) => Eq (Exinst.Some3 f3)
   where
     {-# INLINABLE (==) #-}
     (==) = \som3x som3y ->
@@ -158,7 +160,7 @@
     , SDecide ('KProxy :: KProxy k2)
     , SDecide ('KProxy :: KProxy k1)
     , Dict4 Eq f4
-    ) => Eq (Some4 f4)
+    ) => Eq (Exinst.Some4 f4)
   where
     {-# INLINABLE (==) #-}
     (==) = \som4x som4y ->
@@ -180,8 +182,8 @@
     , SDecide ('KProxy :: KProxy k1)
     , Ord (DemoteRep ('KProxy :: KProxy k1))
     , Dict1 Ord f1
-    , Eq (Some1 f1)
-    ) => Ord (Some1 f1)
+    , Eq (Exinst.Some1 f1)
+    ) => Ord (Exinst.Some1 f1)
   where
     {-# INLINABLE compare #-}
     compare = \som1x som1y ->
@@ -201,8 +203,8 @@
     , Ord (DemoteRep ('KProxy :: KProxy k2))
     , Ord (DemoteRep ('KProxy :: KProxy k1))
     , Dict2 Ord f2
-    , Eq (Some2 f2)
-    ) => Ord (Some2 f2)
+    , Eq (Exinst.Some2 f2)
+    ) => Ord (Exinst.Some2 f2)
   where
     {-# INLINABLE compare #-}
     compare = \som2x som2y ->
@@ -227,8 +229,8 @@
     , Ord (DemoteRep ('KProxy :: KProxy k2))
     , Ord (DemoteRep ('KProxy :: KProxy k1))
     , Dict3 Ord f3
-    , Eq (Some3 f3)
-    ) => Ord (Some3 f3)
+    , Eq (Exinst.Some3 f3)
+    ) => Ord (Exinst.Some3 f3)
   where
     {-# INLINABLE compare #-}
     compare = \som3x som3y ->
@@ -258,8 +260,8 @@
     , Ord (DemoteRep ('KProxy :: KProxy k2))
     , Ord (DemoteRep ('KProxy :: KProxy k1))
     , Dict4 Ord f4
-    , Eq (Some4 f4)
-    ) => Ord (Some4 f4)
+    , Eq (Exinst.Some4 f4)
+    ) => Ord (Exinst.Some4 f4)
   where
     {-# INLINABLE compare #-}
     compare = \som4x som4y ->
diff --git a/src/lib/Exinst/Singletons.hs b/src/lib/Exinst/Singletons.hs
--- a/src/lib/Exinst/Singletons.hs
+++ b/src/lib/Exinst/Singletons.hs
@@ -10,7 +10,7 @@
 -- | See the README file for documentation: https://hackage.haskell.org/package/exinst#readme
 module Exinst.Singletons
  ( -- * 1 type index
-   Some1
+   Some1(Some1)
  , some1
  , withSome1Sing
  , withSome1
@@ -18,7 +18,7 @@
  , Dict1(dict1)
 
    -- * 2 type indexes
- , Some2
+ , Some2(Some2)
  , some2
  , withSome2Sing
  , withSome2
@@ -26,7 +26,7 @@
  , Dict2(dict2)
 
    -- * 3 type indexes
- , Some3
+ , Some3(Some3)
  , some3
  , withSome3Sing
  , withSome3
@@ -34,12 +34,15 @@
  , Dict3(dict3)
 
    -- * 4 type indexes
- , Some4
+ , Some4(Some4)
  , some4
  , withSome4Sing
  , withSome4
  , fromSome4
  , Dict4(dict4)
+
+   -- * Re-exports
+ , Dict(Dict)
  ) where
 
 import Data.Constraint
@@ -48,7 +51,19 @@
 import Data.Type.Equality
 import Prelude
 
-import Exinst.Singletons.Internal
+--------------------------------------------------------------------------------
+
+data Some1 (f1 :: k1 -> *) = forall a1.
+  Some1 !(Sing a1) !(f1 a1)
+
+data Some2 (f2 :: k2 -> k1 -> *) = forall a2 a1.
+  Some2 !(Sing a2) !(Sing a1) !(f2 a2 a1)
+
+data Some3 (f3 :: k3 -> k2 -> k1 -> *) = forall a3 a2 a1.
+  Some3 !(Sing a3) !(Sing a2) !(Sing a1) !(f3 a3 a2 a1)
+
+data Some4 (f4 :: k4 -> k3 -> k2 -> k1 -> *) = forall a4 a3 a2 a1.
+  Some4 !(Sing a4) !(Sing a3) !(Sing a2) !(Sing a1) !(f4 a4 a3 a2 a1)
 
 --------------------------------------------------------------------------------
 
diff --git a/src/lib/Exinst/Singletons/Internal.hs b/src/lib/Exinst/Singletons/Internal.hs
deleted file mode 100644
--- a/src/lib/Exinst/Singletons/Internal.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE PolyKinds #-}
-
--- | This is an internal module, do not import it directly. Import
--- "Exinst.Singletons" instead.
-module Exinst.Singletons.Internal
- ( Some1(..)
- , Some2(..)
- , Some3(..)
- , Some4(..)
- ) where
-
-import Data.Singletons (Sing)
-
---------------------------------------------------------------------------------
-
-data Some1 (f1 :: k1 -> *) = forall a1.
-  Some1 !(Sing a1) (f1 a1)
-
-data Some2 (f2 :: k2 -> k1 -> *) = forall a2 a1.
-  Some2 !(Sing a2) !(Sing a1) (f2 a2 a1)
-
-data Some3 (f3 :: k3 -> k2 -> k1 -> *) = forall a3 a2 a1.
-  Some3 !(Sing a3) !(Sing a2) !(Sing a1) (f3 a3 a2 a1)
-
-data Some4 (f4 :: k4 -> k3 -> k2 -> k1 -> *) = forall a4 a3 a2 a1.
-  Some4 !(Sing a4) !(Sing a3) !(Sing a2) !(Sing a1) (f4 a4 a3 a2 a1)
-
---------------------------------------------------------------------------------
