diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -14,6 +14,9 @@
 
 # Changelog
 
+* 1.0.0.1
+  - Added `CaseTypeable'` as an example of polymorphic `Case` that doesn't change the type.
+
 * 1.0.0.0
   - The exposed api shouldn't break, but there are a lot of internal changes.
   - Added `AFunctor` which can map over the types in the 'Many' <https://github.com/louispan/data-diverse/issues/5>.
diff --git a/data-diverse.cabal b/data-diverse.cabal
--- a/data-diverse.cabal
+++ b/data-diverse.cabal
@@ -1,5 +1,5 @@
 name:                data-diverse
-version:             1.0.0.0
+version:             1.0.0.1
 synopsis:            Extensible records and polymorphic variants.
 description:         "Data.Diverse.Many" is an extensible record for any size encoded efficiently as (Seq Any).
                      "Data.Diverse.Which" is a polymorphic variant of possibilities encoded as (Int, Any).
diff --git a/src/Data/Diverse/CaseTypeable.hs b/src/Data/Diverse/CaseTypeable.hs
--- a/src/Data/Diverse/CaseTypeable.hs
+++ b/src/Data/Diverse/CaseTypeable.hs
@@ -16,6 +16,8 @@
 import Data.Typeable
 
 -- | This handler stores a polymorphic function for all Typeables.
+-- This is an example of how to define and instance of 'Case' for
+-- polymorphic function into a specified result type.
 --
 -- @
 -- let y = 'Data.Diverse.Which.pick' (5 :: Int) :: 'Data.Diverse.Which.Which' '[Int, Bool]
@@ -36,3 +38,17 @@
 
 instance Typeable x => Case (CaseTypeable r) (x ': xs) where
     case' (CaseTypeable f) = f
+
+
+-- | This handler stores a polymorphic function for all Typeables.
+-- This is an example of how to define and instance of 'Case' for
+-- polymorphic function that doesn't change the type
+newtype CaseTypeable' (xs :: [Type]) = CaseTypeable' (forall x. Typeable x => x -> x)
+
+type instance CaseResult CaseTypeable' x = x
+
+instance Reiterate CaseTypeable' xs where
+    reiterate (CaseTypeable' f) = CaseTypeable' f
+
+instance Typeable x => Case CaseTypeable' (x ': xs) where
+    case' (CaseTypeable' f) = f
