diff --git a/ChangeLog b/ChangeLog
new file mode 100644
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,3 @@
+Version 0.2.2.0
+
+* added S1
diff --git a/Data/Sums.hs b/Data/Sums.hs
--- a/Data/Sums.hs
+++ b/Data/Sums.hs
@@ -13,10 +13,12 @@
 module Data.Sums where
 
 import Data.Typeable
-import GHC.Generics
+import GHC.Generics hiding (S1)
 
 -- * Anonymous sum types
 
+data S1 a = S1a a deriving (Eq, Ord, Read, Show, Generic, Typeable)
+
 data S2 a b = S2a a | S2b b deriving (Eq, Ord, Read, Show, Generic, Typeable)
 
 data S3 a b c = S3a a | S3b b | S3c c deriving (Eq, Ord, Read, Show, Generic, Typeable)
@@ -47,6 +49,12 @@
 
 -- * Partitioning
 
+partitionS1 :: [S1 a] -> ([a])
+partitionS1 = foldr fn ([])
+  where
+    fn it (as) = case it of
+      S1a a -> (a:as)
+
 partitionS2 :: [S2 a b] -> ([a], [b])
 partitionS2 = foldr fn ([], [])
   where
@@ -238,6 +246,10 @@
 
 -- * Case analysis
 
+caseS1 :: (a -> z) -> S1 a -> z
+caseS1 fa s1 = case s1 of
+  S1a a -> fa a
+
 caseS2 :: (a -> z) -> (b -> z) -> S2 a b -> z
 caseS2 fa fb s2 = case s2 of
   S2a a -> fa a
@@ -401,6 +413,9 @@
 
 -- * Mapping
 
+mapS1 :: (a -> a1) -> S1 a -> S1 a1
+mapS1 a = caseS1 (S1a . a)
+
 mapS2 :: (a -> a1) -> (b -> b1) -> S2 a b -> S2 a1 b1
 mapS2 a b = caseS2 (S2a . a) (S2b . b)
 
@@ -444,6 +459,10 @@
 mapS15 a b c d e f g h i j k l m n o = caseS15 (S15a . a) (S15b . b) (S15c . c) (S15d . d) (S15e . e) (S15f . f) (S15g . g) (S15h . h) (S15i . i) (S15j . j) (S15k . k) (S15l . l) (S15m . m) (S15n . n) (S15o . o)
 
 -- * Mapping in a Functor
+
+mapS1f :: Functor ftr =>
+  (a -> ftr a1) -> S1 a -> ftr (S1 a1)
+mapS1f a = caseS1 (fmap S1a . a)
 
 mapS2f :: Functor ftr =>
   (a -> ftr a1) -> (b -> ftr b1) -> S2 a b -> ftr (S2 a1 b1)
diff --git a/anonymous-sums.cabal b/anonymous-sums.cabal
--- a/anonymous-sums.cabal
+++ b/anonymous-sums.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                anonymous-sums
-version:             0.2.0.0
+version:             0.2.2.0
 synopsis:            Anonymous sum types
 description:
   Anonymous sum types.  Like tuples, but for sum types rather than
@@ -16,7 +16,7 @@
 category:            Data
 build-type:          Simple
 cabal-version:       >=1.10
-extra-source-files: README.md
+extra-source-files: README.md, ChangeLog
 
 library
   exposed-modules: Data.Sums
diff --git a/generate-sums.hs b/generate-sums.hs
--- a/generate-sums.hs
+++ b/generate-sums.hs
@@ -158,7 +158,7 @@
 
     imports = unlines
       [ "import Data.Typeable"
-      , "import GHC.Generics"
+      , "import GHC.Generics hiding (S1)"
       , ""
       ]
 
@@ -177,7 +177,7 @@
     mapFs = "-- * Mapping in a Functor\n\n"
       ++ concatMap mapDefA vs
 
-    vs = [2..i]
+    vs = [1..i]
 
 usage
   :: String
