diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
 
 N=15
 
-update:	updateCurry updateSelect updateSequence
+update:	updateCurry updateSelect updateSequence updateUpd
 
 updateCurry:
 	make N=$(N) UPDFILE=src/Data/Tuple/Curry.hs UPD=curry updateIt
@@ -14,7 +14,13 @@
 updateSequence:
 	make N=$(N) UPDFILE=src/Data/Tuple/Sequence.hs UPD=sequence updateIt
 
+updateUpd:
+	make N=$(N) UPDFILE=src/Data/Tuple/Update.hs UPD=update updateIt
+
 updateIt:
 	sed '/--snip--/,$$d' $(UPDFILE) > tmp.hs
 	runhaskell Tools/MkTuple $(UPD) $(N) >> tmp.hs
 	mv tmp.hs $(UPDFILE)
+
+install:
+	cabal install
diff --git a/Tools/MkTuple.hs b/Tools/MkTuple.hs
--- a/Tools/MkTuple.hs
+++ b/Tools/MkTuple.hs
@@ -17,7 +17,8 @@
 gens :: [(String, Int -> IO ())]
 gens = [("select", generateSel),
         ("sequence", generateSeq),
-        ("curry", generateCurry)
+        ("curry", generateCurry),
+        ("update", generateUpd)
        ]
 
 ---------
@@ -65,3 +66,23 @@
   where vars = ["a" ++ show j | j <- [1..i]]
         tup = "(" ++ intercalate "," vars ++ ")"
         varsp = unwords vars
+
+---------
+
+generateUpd :: Int -> IO ()
+generateUpd n = mapM_ (generateUpdN n) [1..n]
+
+generateUpdN :: Int -> Int -> IO ()
+generateUpdN n i = do
+    putStrLn $ "class Upd" ++ show i ++ " a b c | a b -> c , b c -> a where upd" ++ show i ++ " :: a -> b -> c"
+    mapM_ (generateUpdNinst i) [i..n]
+    putStrLn ""
+
+generateUpdNinst :: Int -> Int -> IO ()
+generateUpdNinst 1 1 = return ()
+generateUpdNinst j i = do
+    putStrLn $ "instance Upd" ++ show j ++ " b (" ++ intercalate "," ["a" ++ show l | l <- [1..i]] ++ ") " ++
+               res ++ " where upd" ++ show j ++ " b (" ++ 
+               intercalate "," [ "a" ++ show l | l <- [1..i]] ++ ") = " ++ res
+ where res =
+        "(" ++ intercalate "," [ if l == j then "b" else "a" ++ show l | l <- [1..i]] ++ ")"
diff --git a/src/Data/Tuple/All.hs b/src/Data/Tuple/All.hs
--- a/src/Data/Tuple/All.hs
+++ b/src/Data/Tuple/All.hs
@@ -3,8 +3,10 @@
     module Data.Tuple.OneTuple,
     module Data.Tuple.Select,
     module Data.Tuple.Sequence,
+    module Data.Tuple.Update,
     ) where
 import Data.Tuple.Curry
 import Data.Tuple.OneTuple
 import Data.Tuple.Select
 import Data.Tuple.Sequence
+import Data.Tuple.Update
diff --git a/src/Data/Tuple/Curry.hs b/src/Data/Tuple/Curry.hs
--- a/src/Data/Tuple/Curry.hs
+++ b/src/Data/Tuple/Curry.hs
@@ -11,48 +11,48 @@
     curryN f a = f (OneTuple a)
     uncurryN f ~(OneTuple a) = f a
 
---snip-----------------
----- Machine generated code below, see Tools/MkTuple.hs
----- mkTuple curry 15
-instance Curry ((a1,a2) -> r) (a1->a2 -> r) where
-    curryN f a1 a2 = f (a1,a2)
-    uncurryN f ~(a1,a2) = f a1 a2
-instance Curry ((a1,a2,a3) -> r) (a1->a2->a3 -> r) where
-    curryN f a1 a2 a3 = f (a1,a2,a3)
-    uncurryN f ~(a1,a2,a3) = f a1 a2 a3
-instance Curry ((a1,a2,a3,a4) -> r) (a1->a2->a3->a4 -> r) where
-    curryN f a1 a2 a3 a4 = f (a1,a2,a3,a4)
-    uncurryN f ~(a1,a2,a3,a4) = f a1 a2 a3 a4
-instance Curry ((a1,a2,a3,a4,a5) -> r) (a1->a2->a3->a4->a5 -> r) where
-    curryN f a1 a2 a3 a4 a5 = f (a1,a2,a3,a4,a5)
-    uncurryN f ~(a1,a2,a3,a4,a5) = f a1 a2 a3 a4 a5
-instance Curry ((a1,a2,a3,a4,a5,a6) -> r) (a1->a2->a3->a4->a5->a6 -> r) where
-    curryN f a1 a2 a3 a4 a5 a6 = f (a1,a2,a3,a4,a5,a6)
-    uncurryN f ~(a1,a2,a3,a4,a5,a6) = f a1 a2 a3 a4 a5 a6
-instance Curry ((a1,a2,a3,a4,a5,a6,a7) -> r) (a1->a2->a3->a4->a5->a6->a7 -> r) where
-    curryN f a1 a2 a3 a4 a5 a6 a7 = f (a1,a2,a3,a4,a5,a6,a7)
-    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7) = f a1 a2 a3 a4 a5 a6 a7
-instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8) -> r) (a1->a2->a3->a4->a5->a6->a7->a8 -> r) where
-    curryN f a1 a2 a3 a4 a5 a6 a7 a8 = f (a1,a2,a3,a4,a5,a6,a7,a8)
-    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8) = f a1 a2 a3 a4 a5 a6 a7 a8
-instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9 -> r) where
-    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9)
-    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9) = f a1 a2 a3 a4 a5 a6 a7 a8 a9
-instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10 -> r) where
-    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
-    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
-instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11 -> r) where
-    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)
-    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11
-instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11->a12 -> r) where
-    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)
-    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
-instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11->a12->a13 -> r) where
-    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)
-    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
-instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11->a12->a13->a14 -> r) where
-    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)
-    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14
-instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11->a12->a13->a14->a15 -> r) where
-    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)
-    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15
+--snip-----------------
+---- Machine generated code below, see Tools/MkTuple.hs
+---- mkTuple curry 15
+instance Curry ((a1,a2) -> r) (a1->a2 -> r) where
+    curryN f a1 a2 = f (a1,a2)
+    uncurryN f ~(a1,a2) = f a1 a2
+instance Curry ((a1,a2,a3) -> r) (a1->a2->a3 -> r) where
+    curryN f a1 a2 a3 = f (a1,a2,a3)
+    uncurryN f ~(a1,a2,a3) = f a1 a2 a3
+instance Curry ((a1,a2,a3,a4) -> r) (a1->a2->a3->a4 -> r) where
+    curryN f a1 a2 a3 a4 = f (a1,a2,a3,a4)
+    uncurryN f ~(a1,a2,a3,a4) = f a1 a2 a3 a4
+instance Curry ((a1,a2,a3,a4,a5) -> r) (a1->a2->a3->a4->a5 -> r) where
+    curryN f a1 a2 a3 a4 a5 = f (a1,a2,a3,a4,a5)
+    uncurryN f ~(a1,a2,a3,a4,a5) = f a1 a2 a3 a4 a5
+instance Curry ((a1,a2,a3,a4,a5,a6) -> r) (a1->a2->a3->a4->a5->a6 -> r) where
+    curryN f a1 a2 a3 a4 a5 a6 = f (a1,a2,a3,a4,a5,a6)
+    uncurryN f ~(a1,a2,a3,a4,a5,a6) = f a1 a2 a3 a4 a5 a6
+instance Curry ((a1,a2,a3,a4,a5,a6,a7) -> r) (a1->a2->a3->a4->a5->a6->a7 -> r) where
+    curryN f a1 a2 a3 a4 a5 a6 a7 = f (a1,a2,a3,a4,a5,a6,a7)
+    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7) = f a1 a2 a3 a4 a5 a6 a7
+instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8) -> r) (a1->a2->a3->a4->a5->a6->a7->a8 -> r) where
+    curryN f a1 a2 a3 a4 a5 a6 a7 a8 = f (a1,a2,a3,a4,a5,a6,a7,a8)
+    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8) = f a1 a2 a3 a4 a5 a6 a7 a8
+instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9 -> r) where
+    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9)
+    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9) = f a1 a2 a3 a4 a5 a6 a7 a8 a9
+instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10 -> r) where
+    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
+    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
+instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11 -> r) where
+    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)
+    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11
+instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11->a12 -> r) where
+    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)
+    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
+instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11->a12->a13 -> r) where
+    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)
+    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
+instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11->a12->a13->a14 -> r) where
+    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)
+    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14
+instance Curry ((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) -> r) (a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11->a12->a13->a14->a15 -> r) where
+    curryN f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 = f (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)
+    uncurryN f ~(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) = f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15
diff --git a/src/Data/Tuple/Select.hs b/src/Data/Tuple/Select.hs
--- a/src/Data/Tuple/Select.hs
+++ b/src/Data/Tuple/Select.hs
@@ -6,155 +6,155 @@
 
 instance Sel1 (OneTuple a) a where sel1 (OneTuple x) = x
 
---snip-----------------
----- Machine generated code below, see Tools/MkTuple.hs
----- mkTuple select 15
-class Sel1 a b | a -> b where sel1 :: a -> b
-instance Sel1 (a1,a2) a1 where sel1 (x,_) = x
-instance Sel1 (a1,a2,a3) a1 where sel1 (x,_,_) = x
-instance Sel1 (a1,a2,a3,a4) a1 where sel1 (x,_,_,_) = x
-instance Sel1 (a1,a2,a3,a4,a5) a1 where sel1 (x,_,_,_,_) = x
-instance Sel1 (a1,a2,a3,a4,a5,a6) a1 where sel1 (x,_,_,_,_,_) = x
-instance Sel1 (a1,a2,a3,a4,a5,a6,a7) a1 where sel1 (x,_,_,_,_,_,_) = x
-instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8) a1 where sel1 (x,_,_,_,_,_,_,_) = x
-instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a1 where sel1 (x,_,_,_,_,_,_,_,_) = x
-instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a1 where sel1 (x,_,_,_,_,_,_,_,_,_) = x
-instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a1 where sel1 (x,_,_,_,_,_,_,_,_,_,_) = x
-instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a1 where sel1 (x,_,_,_,_,_,_,_,_,_,_,_) = x
-instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a1 where sel1 (x,_,_,_,_,_,_,_,_,_,_,_,_) = x
-instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a1 where sel1 (x,_,_,_,_,_,_,_,_,_,_,_,_,_) = x
-instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a1 where sel1 (x,_,_,_,_,_,_,_,_,_,_,_,_,_,_) = x
-
-class Sel2 a b | a -> b where sel2 :: a -> b
-instance Sel2 (a1,a2) a2 where sel2 (_,x) = x
-instance Sel2 (a1,a2,a3) a2 where sel2 (_,x,_) = x
-instance Sel2 (a1,a2,a3,a4) a2 where sel2 (_,x,_,_) = x
-instance Sel2 (a1,a2,a3,a4,a5) a2 where sel2 (_,x,_,_,_) = x
-instance Sel2 (a1,a2,a3,a4,a5,a6) a2 where sel2 (_,x,_,_,_,_) = x
-instance Sel2 (a1,a2,a3,a4,a5,a6,a7) a2 where sel2 (_,x,_,_,_,_,_) = x
-instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8) a2 where sel2 (_,x,_,_,_,_,_,_) = x
-instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a2 where sel2 (_,x,_,_,_,_,_,_,_) = x
-instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a2 where sel2 (_,x,_,_,_,_,_,_,_,_) = x
-instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a2 where sel2 (_,x,_,_,_,_,_,_,_,_,_) = x
-instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a2 where sel2 (_,x,_,_,_,_,_,_,_,_,_,_) = x
-instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a2 where sel2 (_,x,_,_,_,_,_,_,_,_,_,_,_) = x
-instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a2 where sel2 (_,x,_,_,_,_,_,_,_,_,_,_,_,_) = x
-instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a2 where sel2 (_,x,_,_,_,_,_,_,_,_,_,_,_,_,_) = x
-
-class Sel3 a b | a -> b where sel3 :: a -> b
-instance Sel3 (a1,a2,a3) a3 where sel3 (_,_,x) = x
-instance Sel3 (a1,a2,a3,a4) a3 where sel3 (_,_,x,_) = x
-instance Sel3 (a1,a2,a3,a4,a5) a3 where sel3 (_,_,x,_,_) = x
-instance Sel3 (a1,a2,a3,a4,a5,a6) a3 where sel3 (_,_,x,_,_,_) = x
-instance Sel3 (a1,a2,a3,a4,a5,a6,a7) a3 where sel3 (_,_,x,_,_,_,_) = x
-instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8) a3 where sel3 (_,_,x,_,_,_,_,_) = x
-instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a3 where sel3 (_,_,x,_,_,_,_,_,_) = x
-instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a3 where sel3 (_,_,x,_,_,_,_,_,_,_) = x
-instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a3 where sel3 (_,_,x,_,_,_,_,_,_,_,_) = x
-instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a3 where sel3 (_,_,x,_,_,_,_,_,_,_,_,_) = x
-instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a3 where sel3 (_,_,x,_,_,_,_,_,_,_,_,_,_) = x
-instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a3 where sel3 (_,_,x,_,_,_,_,_,_,_,_,_,_,_) = x
-instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a3 where sel3 (_,_,x,_,_,_,_,_,_,_,_,_,_,_,_) = x
-
-class Sel4 a b | a -> b where sel4 :: a -> b
-instance Sel4 (a1,a2,a3,a4) a4 where sel4 (_,_,_,x) = x
-instance Sel4 (a1,a2,a3,a4,a5) a4 where sel4 (_,_,_,x,_) = x
-instance Sel4 (a1,a2,a3,a4,a5,a6) a4 where sel4 (_,_,_,x,_,_) = x
-instance Sel4 (a1,a2,a3,a4,a5,a6,a7) a4 where sel4 (_,_,_,x,_,_,_) = x
-instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8) a4 where sel4 (_,_,_,x,_,_,_,_) = x
-instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a4 where sel4 (_,_,_,x,_,_,_,_,_) = x
-instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a4 where sel4 (_,_,_,x,_,_,_,_,_,_) = x
-instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a4 where sel4 (_,_,_,x,_,_,_,_,_,_,_) = x
-instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a4 where sel4 (_,_,_,x,_,_,_,_,_,_,_,_) = x
-instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a4 where sel4 (_,_,_,x,_,_,_,_,_,_,_,_,_) = x
-instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a4 where sel4 (_,_,_,x,_,_,_,_,_,_,_,_,_,_) = x
-instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a4 where sel4 (_,_,_,x,_,_,_,_,_,_,_,_,_,_,_) = x
-
-class Sel5 a b | a -> b where sel5 :: a -> b
-instance Sel5 (a1,a2,a3,a4,a5) a5 where sel5 (_,_,_,_,x) = x
-instance Sel5 (a1,a2,a3,a4,a5,a6) a5 where sel5 (_,_,_,_,x,_) = x
-instance Sel5 (a1,a2,a3,a4,a5,a6,a7) a5 where sel5 (_,_,_,_,x,_,_) = x
-instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8) a5 where sel5 (_,_,_,_,x,_,_,_) = x
-instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a5 where sel5 (_,_,_,_,x,_,_,_,_) = x
-instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a5 where sel5 (_,_,_,_,x,_,_,_,_,_) = x
-instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a5 where sel5 (_,_,_,_,x,_,_,_,_,_,_) = x
-instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a5 where sel5 (_,_,_,_,x,_,_,_,_,_,_,_) = x
-instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a5 where sel5 (_,_,_,_,x,_,_,_,_,_,_,_,_) = x
-instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a5 where sel5 (_,_,_,_,x,_,_,_,_,_,_,_,_,_) = x
-instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a5 where sel5 (_,_,_,_,x,_,_,_,_,_,_,_,_,_,_) = x
-
-class Sel6 a b | a -> b where sel6 :: a -> b
-instance Sel6 (a1,a2,a3,a4,a5,a6) a6 where sel6 (_,_,_,_,_,x) = x
-instance Sel6 (a1,a2,a3,a4,a5,a6,a7) a6 where sel6 (_,_,_,_,_,x,_) = x
-instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8) a6 where sel6 (_,_,_,_,_,x,_,_) = x
-instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a6 where sel6 (_,_,_,_,_,x,_,_,_) = x
-instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a6 where sel6 (_,_,_,_,_,x,_,_,_,_) = x
-instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a6 where sel6 (_,_,_,_,_,x,_,_,_,_,_) = x
-instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a6 where sel6 (_,_,_,_,_,x,_,_,_,_,_,_) = x
-instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a6 where sel6 (_,_,_,_,_,x,_,_,_,_,_,_,_) = x
-instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a6 where sel6 (_,_,_,_,_,x,_,_,_,_,_,_,_,_) = x
-instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a6 where sel6 (_,_,_,_,_,x,_,_,_,_,_,_,_,_,_) = x
-
-class Sel7 a b | a -> b where sel7 :: a -> b
-instance Sel7 (a1,a2,a3,a4,a5,a6,a7) a7 where sel7 (_,_,_,_,_,_,x) = x
-instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8) a7 where sel7 (_,_,_,_,_,_,x,_) = x
-instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a7 where sel7 (_,_,_,_,_,_,x,_,_) = x
-instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a7 where sel7 (_,_,_,_,_,_,x,_,_,_) = x
-instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a7 where sel7 (_,_,_,_,_,_,x,_,_,_,_) = x
-instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a7 where sel7 (_,_,_,_,_,_,x,_,_,_,_,_) = x
-instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a7 where sel7 (_,_,_,_,_,_,x,_,_,_,_,_,_) = x
-instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a7 where sel7 (_,_,_,_,_,_,x,_,_,_,_,_,_,_) = x
-instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a7 where sel7 (_,_,_,_,_,_,x,_,_,_,_,_,_,_,_) = x
-
-class Sel8 a b | a -> b where sel8 :: a -> b
-instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8) a8 where sel8 (_,_,_,_,_,_,_,x) = x
-instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a8 where sel8 (_,_,_,_,_,_,_,x,_) = x
-instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a8 where sel8 (_,_,_,_,_,_,_,x,_,_) = x
-instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a8 where sel8 (_,_,_,_,_,_,_,x,_,_,_) = x
-instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a8 where sel8 (_,_,_,_,_,_,_,x,_,_,_,_) = x
-instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a8 where sel8 (_,_,_,_,_,_,_,x,_,_,_,_,_) = x
-instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a8 where sel8 (_,_,_,_,_,_,_,x,_,_,_,_,_,_) = x
-instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a8 where sel8 (_,_,_,_,_,_,_,x,_,_,_,_,_,_,_) = x
-
-class Sel9 a b | a -> b where sel9 :: a -> b
-instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a9 where sel9 (_,_,_,_,_,_,_,_,x) = x
-instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a9 where sel9 (_,_,_,_,_,_,_,_,x,_) = x
-instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a9 where sel9 (_,_,_,_,_,_,_,_,x,_,_) = x
-instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a9 where sel9 (_,_,_,_,_,_,_,_,x,_,_,_) = x
-instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a9 where sel9 (_,_,_,_,_,_,_,_,x,_,_,_,_) = x
-instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a9 where sel9 (_,_,_,_,_,_,_,_,x,_,_,_,_,_) = x
-instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a9 where sel9 (_,_,_,_,_,_,_,_,x,_,_,_,_,_,_) = x
-
-class Sel10 a b | a -> b where sel10 :: a -> b
-instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a10 where sel10 (_,_,_,_,_,_,_,_,_,x) = x
-instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a10 where sel10 (_,_,_,_,_,_,_,_,_,x,_) = x
-instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a10 where sel10 (_,_,_,_,_,_,_,_,_,x,_,_) = x
-instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a10 where sel10 (_,_,_,_,_,_,_,_,_,x,_,_,_) = x
-instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a10 where sel10 (_,_,_,_,_,_,_,_,_,x,_,_,_,_) = x
-instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a10 where sel10 (_,_,_,_,_,_,_,_,_,x,_,_,_,_,_) = x
-
-class Sel11 a b | a -> b where sel11 :: a -> b
-instance Sel11 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a11 where sel11 (_,_,_,_,_,_,_,_,_,_,x) = x
-instance Sel11 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a11 where sel11 (_,_,_,_,_,_,_,_,_,_,x,_) = x
-instance Sel11 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a11 where sel11 (_,_,_,_,_,_,_,_,_,_,x,_,_) = x
-instance Sel11 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a11 where sel11 (_,_,_,_,_,_,_,_,_,_,x,_,_,_) = x
-instance Sel11 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a11 where sel11 (_,_,_,_,_,_,_,_,_,_,x,_,_,_,_) = x
-
-class Sel12 a b | a -> b where sel12 :: a -> b
-instance Sel12 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a12 where sel12 (_,_,_,_,_,_,_,_,_,_,_,x) = x
-instance Sel12 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a12 where sel12 (_,_,_,_,_,_,_,_,_,_,_,x,_) = x
-instance Sel12 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a12 where sel12 (_,_,_,_,_,_,_,_,_,_,_,x,_,_) = x
-instance Sel12 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a12 where sel12 (_,_,_,_,_,_,_,_,_,_,_,x,_,_,_) = x
-
-class Sel13 a b | a -> b where sel13 :: a -> b
-instance Sel13 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a13 where sel13 (_,_,_,_,_,_,_,_,_,_,_,_,x) = x
-instance Sel13 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a13 where sel13 (_,_,_,_,_,_,_,_,_,_,_,_,x,_) = x
-instance Sel13 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a13 where sel13 (_,_,_,_,_,_,_,_,_,_,_,_,x,_,_) = x
-
-class Sel14 a b | a -> b where sel14 :: a -> b
-instance Sel14 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a14 where sel14 (_,_,_,_,_,_,_,_,_,_,_,_,_,x) = x
-instance Sel14 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a14 where sel14 (_,_,_,_,_,_,_,_,_,_,_,_,_,x,_) = x
-
-class Sel15 a b | a -> b where sel15 :: a -> b
-instance Sel15 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a15 where sel15 (_,_,_,_,_,_,_,_,_,_,_,_,_,_,x) = x
-
+--snip-----------------
+---- Machine generated code below, see Tools/MkTuple.hs
+---- mkTuple select 15
+class Sel1 a b | a -> b where sel1 :: a -> b
+instance Sel1 (a1,a2) a1 where sel1 (x,_) = x
+instance Sel1 (a1,a2,a3) a1 where sel1 (x,_,_) = x
+instance Sel1 (a1,a2,a3,a4) a1 where sel1 (x,_,_,_) = x
+instance Sel1 (a1,a2,a3,a4,a5) a1 where sel1 (x,_,_,_,_) = x
+instance Sel1 (a1,a2,a3,a4,a5,a6) a1 where sel1 (x,_,_,_,_,_) = x
+instance Sel1 (a1,a2,a3,a4,a5,a6,a7) a1 where sel1 (x,_,_,_,_,_,_) = x
+instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8) a1 where sel1 (x,_,_,_,_,_,_,_) = x
+instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a1 where sel1 (x,_,_,_,_,_,_,_,_) = x
+instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a1 where sel1 (x,_,_,_,_,_,_,_,_,_) = x
+instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a1 where sel1 (x,_,_,_,_,_,_,_,_,_,_) = x
+instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a1 where sel1 (x,_,_,_,_,_,_,_,_,_,_,_) = x
+instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a1 where sel1 (x,_,_,_,_,_,_,_,_,_,_,_,_) = x
+instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a1 where sel1 (x,_,_,_,_,_,_,_,_,_,_,_,_,_) = x
+instance Sel1 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a1 where sel1 (x,_,_,_,_,_,_,_,_,_,_,_,_,_,_) = x
+
+class Sel2 a b | a -> b where sel2 :: a -> b
+instance Sel2 (a1,a2) a2 where sel2 (_,x) = x
+instance Sel2 (a1,a2,a3) a2 where sel2 (_,x,_) = x
+instance Sel2 (a1,a2,a3,a4) a2 where sel2 (_,x,_,_) = x
+instance Sel2 (a1,a2,a3,a4,a5) a2 where sel2 (_,x,_,_,_) = x
+instance Sel2 (a1,a2,a3,a4,a5,a6) a2 where sel2 (_,x,_,_,_,_) = x
+instance Sel2 (a1,a2,a3,a4,a5,a6,a7) a2 where sel2 (_,x,_,_,_,_,_) = x
+instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8) a2 where sel2 (_,x,_,_,_,_,_,_) = x
+instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a2 where sel2 (_,x,_,_,_,_,_,_,_) = x
+instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a2 where sel2 (_,x,_,_,_,_,_,_,_,_) = x
+instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a2 where sel2 (_,x,_,_,_,_,_,_,_,_,_) = x
+instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a2 where sel2 (_,x,_,_,_,_,_,_,_,_,_,_) = x
+instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a2 where sel2 (_,x,_,_,_,_,_,_,_,_,_,_,_) = x
+instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a2 where sel2 (_,x,_,_,_,_,_,_,_,_,_,_,_,_) = x
+instance Sel2 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a2 where sel2 (_,x,_,_,_,_,_,_,_,_,_,_,_,_,_) = x
+
+class Sel3 a b | a -> b where sel3 :: a -> b
+instance Sel3 (a1,a2,a3) a3 where sel3 (_,_,x) = x
+instance Sel3 (a1,a2,a3,a4) a3 where sel3 (_,_,x,_) = x
+instance Sel3 (a1,a2,a3,a4,a5) a3 where sel3 (_,_,x,_,_) = x
+instance Sel3 (a1,a2,a3,a4,a5,a6) a3 where sel3 (_,_,x,_,_,_) = x
+instance Sel3 (a1,a2,a3,a4,a5,a6,a7) a3 where sel3 (_,_,x,_,_,_,_) = x
+instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8) a3 where sel3 (_,_,x,_,_,_,_,_) = x
+instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a3 where sel3 (_,_,x,_,_,_,_,_,_) = x
+instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a3 where sel3 (_,_,x,_,_,_,_,_,_,_) = x
+instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a3 where sel3 (_,_,x,_,_,_,_,_,_,_,_) = x
+instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a3 where sel3 (_,_,x,_,_,_,_,_,_,_,_,_) = x
+instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a3 where sel3 (_,_,x,_,_,_,_,_,_,_,_,_,_) = x
+instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a3 where sel3 (_,_,x,_,_,_,_,_,_,_,_,_,_,_) = x
+instance Sel3 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a3 where sel3 (_,_,x,_,_,_,_,_,_,_,_,_,_,_,_) = x
+
+class Sel4 a b | a -> b where sel4 :: a -> b
+instance Sel4 (a1,a2,a3,a4) a4 where sel4 (_,_,_,x) = x
+instance Sel4 (a1,a2,a3,a4,a5) a4 where sel4 (_,_,_,x,_) = x
+instance Sel4 (a1,a2,a3,a4,a5,a6) a4 where sel4 (_,_,_,x,_,_) = x
+instance Sel4 (a1,a2,a3,a4,a5,a6,a7) a4 where sel4 (_,_,_,x,_,_,_) = x
+instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8) a4 where sel4 (_,_,_,x,_,_,_,_) = x
+instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a4 where sel4 (_,_,_,x,_,_,_,_,_) = x
+instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a4 where sel4 (_,_,_,x,_,_,_,_,_,_) = x
+instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a4 where sel4 (_,_,_,x,_,_,_,_,_,_,_) = x
+instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a4 where sel4 (_,_,_,x,_,_,_,_,_,_,_,_) = x
+instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a4 where sel4 (_,_,_,x,_,_,_,_,_,_,_,_,_) = x
+instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a4 where sel4 (_,_,_,x,_,_,_,_,_,_,_,_,_,_) = x
+instance Sel4 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a4 where sel4 (_,_,_,x,_,_,_,_,_,_,_,_,_,_,_) = x
+
+class Sel5 a b | a -> b where sel5 :: a -> b
+instance Sel5 (a1,a2,a3,a4,a5) a5 where sel5 (_,_,_,_,x) = x
+instance Sel5 (a1,a2,a3,a4,a5,a6) a5 where sel5 (_,_,_,_,x,_) = x
+instance Sel5 (a1,a2,a3,a4,a5,a6,a7) a5 where sel5 (_,_,_,_,x,_,_) = x
+instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8) a5 where sel5 (_,_,_,_,x,_,_,_) = x
+instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a5 where sel5 (_,_,_,_,x,_,_,_,_) = x
+instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a5 where sel5 (_,_,_,_,x,_,_,_,_,_) = x
+instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a5 where sel5 (_,_,_,_,x,_,_,_,_,_,_) = x
+instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a5 where sel5 (_,_,_,_,x,_,_,_,_,_,_,_) = x
+instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a5 where sel5 (_,_,_,_,x,_,_,_,_,_,_,_,_) = x
+instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a5 where sel5 (_,_,_,_,x,_,_,_,_,_,_,_,_,_) = x
+instance Sel5 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a5 where sel5 (_,_,_,_,x,_,_,_,_,_,_,_,_,_,_) = x
+
+class Sel6 a b | a -> b where sel6 :: a -> b
+instance Sel6 (a1,a2,a3,a4,a5,a6) a6 where sel6 (_,_,_,_,_,x) = x
+instance Sel6 (a1,a2,a3,a4,a5,a6,a7) a6 where sel6 (_,_,_,_,_,x,_) = x
+instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8) a6 where sel6 (_,_,_,_,_,x,_,_) = x
+instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a6 where sel6 (_,_,_,_,_,x,_,_,_) = x
+instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a6 where sel6 (_,_,_,_,_,x,_,_,_,_) = x
+instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a6 where sel6 (_,_,_,_,_,x,_,_,_,_,_) = x
+instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a6 where sel6 (_,_,_,_,_,x,_,_,_,_,_,_) = x
+instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a6 where sel6 (_,_,_,_,_,x,_,_,_,_,_,_,_) = x
+instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a6 where sel6 (_,_,_,_,_,x,_,_,_,_,_,_,_,_) = x
+instance Sel6 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a6 where sel6 (_,_,_,_,_,x,_,_,_,_,_,_,_,_,_) = x
+
+class Sel7 a b | a -> b where sel7 :: a -> b
+instance Sel7 (a1,a2,a3,a4,a5,a6,a7) a7 where sel7 (_,_,_,_,_,_,x) = x
+instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8) a7 where sel7 (_,_,_,_,_,_,x,_) = x
+instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a7 where sel7 (_,_,_,_,_,_,x,_,_) = x
+instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a7 where sel7 (_,_,_,_,_,_,x,_,_,_) = x
+instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a7 where sel7 (_,_,_,_,_,_,x,_,_,_,_) = x
+instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a7 where sel7 (_,_,_,_,_,_,x,_,_,_,_,_) = x
+instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a7 where sel7 (_,_,_,_,_,_,x,_,_,_,_,_,_) = x
+instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a7 where sel7 (_,_,_,_,_,_,x,_,_,_,_,_,_,_) = x
+instance Sel7 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a7 where sel7 (_,_,_,_,_,_,x,_,_,_,_,_,_,_,_) = x
+
+class Sel8 a b | a -> b where sel8 :: a -> b
+instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8) a8 where sel8 (_,_,_,_,_,_,_,x) = x
+instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a8 where sel8 (_,_,_,_,_,_,_,x,_) = x
+instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a8 where sel8 (_,_,_,_,_,_,_,x,_,_) = x
+instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a8 where sel8 (_,_,_,_,_,_,_,x,_,_,_) = x
+instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a8 where sel8 (_,_,_,_,_,_,_,x,_,_,_,_) = x
+instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a8 where sel8 (_,_,_,_,_,_,_,x,_,_,_,_,_) = x
+instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a8 where sel8 (_,_,_,_,_,_,_,x,_,_,_,_,_,_) = x
+instance Sel8 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a8 where sel8 (_,_,_,_,_,_,_,x,_,_,_,_,_,_,_) = x
+
+class Sel9 a b | a -> b where sel9 :: a -> b
+instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9) a9 where sel9 (_,_,_,_,_,_,_,_,x) = x
+instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a9 where sel9 (_,_,_,_,_,_,_,_,x,_) = x
+instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a9 where sel9 (_,_,_,_,_,_,_,_,x,_,_) = x
+instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a9 where sel9 (_,_,_,_,_,_,_,_,x,_,_,_) = x
+instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a9 where sel9 (_,_,_,_,_,_,_,_,x,_,_,_,_) = x
+instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a9 where sel9 (_,_,_,_,_,_,_,_,x,_,_,_,_,_) = x
+instance Sel9 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a9 where sel9 (_,_,_,_,_,_,_,_,x,_,_,_,_,_,_) = x
+
+class Sel10 a b | a -> b where sel10 :: a -> b
+instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) a10 where sel10 (_,_,_,_,_,_,_,_,_,x) = x
+instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a10 where sel10 (_,_,_,_,_,_,_,_,_,x,_) = x
+instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a10 where sel10 (_,_,_,_,_,_,_,_,_,x,_,_) = x
+instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a10 where sel10 (_,_,_,_,_,_,_,_,_,x,_,_,_) = x
+instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a10 where sel10 (_,_,_,_,_,_,_,_,_,x,_,_,_,_) = x
+instance Sel10 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a10 where sel10 (_,_,_,_,_,_,_,_,_,x,_,_,_,_,_) = x
+
+class Sel11 a b | a -> b where sel11 :: a -> b
+instance Sel11 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) a11 where sel11 (_,_,_,_,_,_,_,_,_,_,x) = x
+instance Sel11 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a11 where sel11 (_,_,_,_,_,_,_,_,_,_,x,_) = x
+instance Sel11 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a11 where sel11 (_,_,_,_,_,_,_,_,_,_,x,_,_) = x
+instance Sel11 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a11 where sel11 (_,_,_,_,_,_,_,_,_,_,x,_,_,_) = x
+instance Sel11 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a11 where sel11 (_,_,_,_,_,_,_,_,_,_,x,_,_,_,_) = x
+
+class Sel12 a b | a -> b where sel12 :: a -> b
+instance Sel12 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) a12 where sel12 (_,_,_,_,_,_,_,_,_,_,_,x) = x
+instance Sel12 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a12 where sel12 (_,_,_,_,_,_,_,_,_,_,_,x,_) = x
+instance Sel12 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a12 where sel12 (_,_,_,_,_,_,_,_,_,_,_,x,_,_) = x
+instance Sel12 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a12 where sel12 (_,_,_,_,_,_,_,_,_,_,_,x,_,_,_) = x
+
+class Sel13 a b | a -> b where sel13 :: a -> b
+instance Sel13 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) a13 where sel13 (_,_,_,_,_,_,_,_,_,_,_,_,x) = x
+instance Sel13 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a13 where sel13 (_,_,_,_,_,_,_,_,_,_,_,_,x,_) = x
+instance Sel13 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a13 where sel13 (_,_,_,_,_,_,_,_,_,_,_,_,x,_,_) = x
+
+class Sel14 a b | a -> b where sel14 :: a -> b
+instance Sel14 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) a14 where sel14 (_,_,_,_,_,_,_,_,_,_,_,_,_,x) = x
+instance Sel14 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a14 where sel14 (_,_,_,_,_,_,_,_,_,_,_,_,_,x,_) = x
+
+class Sel15 a b | a -> b where sel15 :: a -> b
+instance Sel15 (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) a15 where sel15 (_,_,_,_,_,_,_,_,_,_,_,_,_,_,x) = x
+
diff --git a/src/Data/Tuple/Sequence.hs b/src/Data/Tuple/Sequence.hs
--- a/src/Data/Tuple/Sequence.hs
+++ b/src/Data/Tuple/Sequence.hs
@@ -11,20 +11,20 @@
 instance (Monad m) => SequenceT (OneTuple (m a)) (m (OneTuple a)) where
     sequenceT (OneTuple a) = return OneTuple `ap` a
 
---snip-----------------
----- Machine generated code below, see Tools/MkTuple.hs
----- mkTuple sequence 15
-instance (Monad m) => SequenceT (m a1,m a2) (m (a1,a2)) where sequenceT (a1,a2) = return (,) `ap` a1 `ap` a2
-instance (Monad m) => SequenceT (m a1,m a2,m a3) (m (a1,a2,a3)) where sequenceT (a1,a2,a3) = return (,,) `ap` a1 `ap` a2 `ap` a3
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4) (m (a1,a2,a3,a4)) where sequenceT (a1,a2,a3,a4) = return (,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5) (m (a1,a2,a3,a4,a5)) where sequenceT (a1,a2,a3,a4,a5) = return (,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6) (m (a1,a2,a3,a4,a5,a6)) where sequenceT (a1,a2,a3,a4,a5,a6) = return (,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7) (m (a1,a2,a3,a4,a5,a6,a7)) where sequenceT (a1,a2,a3,a4,a5,a6,a7) = return (,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8) (m (a1,a2,a3,a4,a5,a6,a7,a8)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8) = return (,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9) = return (,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) = return (,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10,m a11) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) = return (,,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10 `ap` a11
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10,m a11,m a12) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) = return (,,,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10 `ap` a11 `ap` a12
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10,m a11,m a12,m a13) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) = return (,,,,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10 `ap` a11 `ap` a12 `ap` a13
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10,m a11,m a12,m a13,m a14) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) = return (,,,,,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10 `ap` a11 `ap` a12 `ap` a13 `ap` a14
-instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10,m a11,m a12,m a13,m a14,m a15) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) = return (,,,,,,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10 `ap` a11 `ap` a12 `ap` a13 `ap` a14 `ap` a15
+--snip-----------------
+---- Machine generated code below, see Tools/MkTuple.hs
+---- mkTuple sequence 15
+instance (Monad m) => SequenceT (m a1,m a2) (m (a1,a2)) where sequenceT (a1,a2) = return (,) `ap` a1 `ap` a2
+instance (Monad m) => SequenceT (m a1,m a2,m a3) (m (a1,a2,a3)) where sequenceT (a1,a2,a3) = return (,,) `ap` a1 `ap` a2 `ap` a3
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4) (m (a1,a2,a3,a4)) where sequenceT (a1,a2,a3,a4) = return (,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5) (m (a1,a2,a3,a4,a5)) where sequenceT (a1,a2,a3,a4,a5) = return (,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6) (m (a1,a2,a3,a4,a5,a6)) where sequenceT (a1,a2,a3,a4,a5,a6) = return (,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7) (m (a1,a2,a3,a4,a5,a6,a7)) where sequenceT (a1,a2,a3,a4,a5,a6,a7) = return (,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8) (m (a1,a2,a3,a4,a5,a6,a7,a8)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8) = return (,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9) = return (,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) = return (,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10,m a11) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) = return (,,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10 `ap` a11
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10,m a11,m a12) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) = return (,,,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10 `ap` a11 `ap` a12
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10,m a11,m a12,m a13) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) = return (,,,,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10 `ap` a11 `ap` a12 `ap` a13
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10,m a11,m a12,m a13,m a14) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) = return (,,,,,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10 `ap` a11 `ap` a12 `ap` a13 `ap` a14
+instance (Monad m) => SequenceT (m a1,m a2,m a3,m a4,m a5,m a6,m a7,m a8,m a9,m a10,m a11,m a12,m a13,m a14,m a15) (m (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)) where sequenceT (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) = return (,,,,,,,,,,,,,,) `ap` a1 `ap` a2 `ap` a3 `ap` a4 `ap` a5 `ap` a6 `ap` a7 `ap` a8 `ap` a9 `ap` a10 `ap` a11 `ap` a12 `ap` a13 `ap` a14 `ap` a15
diff --git a/tuple.cabal b/tuple.cabal
--- a/tuple.cabal
+++ b/tuple.cabal
@@ -1,5 +1,5 @@
 Name:		tuple
-Version:	0.1.0.1
+Version:	0.2.0.0
 License:	BSD3
 Author:		Lennart Augustsson
 Maintainer:	Lennart Augustsson
