diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+# Version 0.2
+
+* Depend on `singletons-2.2`, which means `KProxy` is gone.
+
+
 # Version 0.1.0.2
 
 * Relax upper bound on `aeson`, `base`, `singletons`, `constraints`.
diff --git a/exinst-aeson.cabal b/exinst-aeson.cabal
--- a/exinst-aeson.cabal
+++ b/exinst-aeson.cabal
@@ -1,5 +1,5 @@
 name:                exinst-aeson
-version:             0.1.0.2
+version:             0.2
 author:              Renzo Carbonara
 maintainer:          renzoλcarbonara.com.ar
 copyright:           Renzo Carbonara 2015-2016
@@ -20,9 +20,9 @@
       Exinst.Instances.Aeson
   build-depends:
       aeson >=0.8 && <1.1
-    , base >=4.7 && <5.0
+    , base >=4.9 && <5.0
     , constraints >=0.4 && <0.9
-    , exinst >=0.1 && <0.2
-    , singletons >=1.1 && <2.2
+    , exinst >=0.2 && <0.3
+    , singletons >=2.2 && <2.3
   ghcjs-options: -Wall -O3
   ghc-options: -Wall -O2
diff --git a/src/lib/Exinst/Instances/Aeson.hs b/src/lib/Exinst/Instances/Aeson.hs
--- a/src/lib/Exinst/Instances/Aeson.hs
+++ b/src/lib/Exinst/Instances/Aeson.hs
@@ -22,8 +22,8 @@
 --------------------------------------------------------------------------------
 
 instance forall (f1 :: k1 -> *)
-  . ( SingKind ('KProxy :: KProxy k1)
-    , Ae.ToJSON (DemoteRep ('KProxy :: KProxy k1))
+  . ( SingKind k1
+    , Ae.ToJSON (DemoteRep k1)
     , Dict1 Ae.ToJSON f1
     ) => Ae.ToJSON (Some1 f1)
   where
@@ -33,10 +33,10 @@
           Dict -> Ae.toJSON (fromSing sa1, x)
 
 instance forall (f2 :: k2 -> k1 -> *)
-  . ( SingKind ('KProxy :: KProxy k2)
-    , SingKind ('KProxy :: KProxy k1)
-    , Ae.ToJSON (DemoteRep ('KProxy :: KProxy k2))
-    , Ae.ToJSON (DemoteRep ('KProxy :: KProxy k1))
+  . ( SingKind k2
+    , SingKind k1
+    , Ae.ToJSON (DemoteRep k2)
+    , Ae.ToJSON (DemoteRep k1)
     , Dict2 Ae.ToJSON f2
     ) => Ae.ToJSON (Some2 f2)
   where
@@ -46,12 +46,12 @@
           Dict -> Ae.toJSON ((fromSing sa2, fromSing sa1), x)
 
 instance forall (f3 :: k3 -> k2 -> k1 -> *)
-  . ( SingKind ('KProxy :: KProxy k3)
-    , SingKind ('KProxy :: KProxy k2)
-    , SingKind ('KProxy :: KProxy k1)
-    , Ae.ToJSON (DemoteRep ('KProxy :: KProxy k3))
-    , Ae.ToJSON (DemoteRep ('KProxy :: KProxy k2))
-    , Ae.ToJSON (DemoteRep ('KProxy :: KProxy k1))
+  . ( SingKind k3
+    , SingKind k2
+    , SingKind k1
+    , Ae.ToJSON (DemoteRep k3)
+    , Ae.ToJSON (DemoteRep k2)
+    , Ae.ToJSON (DemoteRep k1)
     , Dict3 Ae.ToJSON f3
     ) => Ae.ToJSON (Some3 f3)
   where
@@ -61,14 +61,14 @@
           Dict -> Ae.toJSON ((fromSing sa3, fromSing sa2, fromSing sa1), x)
 
 instance forall (f4 :: k4 -> k3 -> k2 -> k1 -> *)
-  . ( SingKind ('KProxy :: KProxy k4)
-    , SingKind ('KProxy :: KProxy k3)
-    , SingKind ('KProxy :: KProxy k2)
-    , SingKind ('KProxy :: KProxy k1)
-    , Ae.ToJSON (DemoteRep ('KProxy :: KProxy k4))
-    , Ae.ToJSON (DemoteRep ('KProxy :: KProxy k3))
-    , Ae.ToJSON (DemoteRep ('KProxy :: KProxy k2))
-    , Ae.ToJSON (DemoteRep ('KProxy :: KProxy k1))
+  . ( SingKind k4
+    , SingKind k3
+    , SingKind k2
+    , SingKind k1
+    , Ae.ToJSON (DemoteRep k4)
+    , Ae.ToJSON (DemoteRep k3)
+    , Ae.ToJSON (DemoteRep k2)
+    , Ae.ToJSON (DemoteRep k1)
     , Dict4 Ae.ToJSON f4
     ) => Ae.ToJSON (Some4 f4)
   where
@@ -80,8 +80,8 @@
 --------------------------------------------------------------------------------
 
 instance forall (f1 :: k1 -> *)
-  . ( SingKind ('KProxy :: KProxy k1)
-    , Ae.FromJSON (DemoteRep ('KProxy :: KProxy k1))
+  . ( SingKind k1
+    , Ae.FromJSON (DemoteRep k1)
     , Dict1 Ae.FromJSON f1
     ) => Ae.FromJSON (Some1 f1)
   where
@@ -95,12 +95,12 @@
                return (some1 x)
 
 instance forall (f2 :: k2 -> k1 -> *)
-  . ( SingKind ('KProxy :: KProxy k2)
-    , SingKind ('KProxy :: KProxy k1)
-    , Ae.FromJSON (DemoteRep ('KProxy :: KProxy k2))
-    , Ae.FromJSON (DemoteRep ('KProxy :: KProxy k1))
+  . ( SingKind k2
+    , SingKind k1
+    , Ae.FromJSON (DemoteRep k2)
+    , Ae.FromJSON (DemoteRep k1)
     , Dict2 Ae.FromJSON f2
-    ) => Ae.FromJSON (Some2 f2) 
+    ) => Ae.FromJSON (Some2 f2)
   where
     {-# INLINABLE parseJSON #-}
     parseJSON = \v -> do
@@ -113,14 +113,14 @@
                   return (some2 x)
 
 instance forall (f3 :: k3 -> k2 -> k1 -> *)
-  . ( SingKind ('KProxy :: KProxy k3)
-    , SingKind ('KProxy :: KProxy k2)
-    , SingKind ('KProxy :: KProxy k1)
-    , Ae.FromJSON (DemoteRep ('KProxy :: KProxy k3))
-    , Ae.FromJSON (DemoteRep ('KProxy :: KProxy k2))
-    , Ae.FromJSON (DemoteRep ('KProxy :: KProxy k1))
+  . ( SingKind k3
+    , SingKind k2
+    , SingKind k1
+    , Ae.FromJSON (DemoteRep k3)
+    , Ae.FromJSON (DemoteRep k2)
+    , Ae.FromJSON (DemoteRep k1)
     , Dict3 Ae.FromJSON f3
-    ) => Ae.FromJSON (Some3 f3) 
+    ) => Ae.FromJSON (Some3 f3)
   where
     {-# INLINABLE parseJSON #-}
     parseJSON = \v -> do
@@ -134,14 +134,14 @@
                      return (some3 x)
 
 instance forall (f4 :: k4 -> k3 -> k2 -> k1 -> *)
-  . ( SingKind ('KProxy :: KProxy k4)
-    , SingKind ('KProxy :: KProxy k3)
-    , SingKind ('KProxy :: KProxy k2)
-    , SingKind ('KProxy :: KProxy k1)
-    , Ae.FromJSON (DemoteRep ('KProxy :: KProxy k4))
-    , Ae.FromJSON (DemoteRep ('KProxy :: KProxy k3))
-    , Ae.FromJSON (DemoteRep ('KProxy :: KProxy k2))
-    , Ae.FromJSON (DemoteRep ('KProxy :: KProxy k1))
+  . ( SingKind k4
+    , SingKind k3
+    , SingKind k2
+    , SingKind k1
+    , Ae.FromJSON (DemoteRep k4)
+    , Ae.FromJSON (DemoteRep k3)
+    , Ae.FromJSON (DemoteRep k2)
+    , Ae.FromJSON (DemoteRep k1)
     , Dict4 Ae.FromJSON f4
     ) => Ae.FromJSON (Some4 f4)
   where
