diff --git a/fixed-length.cabal b/fixed-length.cabal
--- a/fixed-length.cabal
+++ b/fixed-length.cabal
@@ -1,6 +1,6 @@
 Cabal-Version:    2.2
 Name:             fixed-length
-Version:          0.2.2.1
+Version:          0.2.3
 License:          BSD-3-Clause
 License-File:     LICENSE
 Author:           Henning Thielemann <haskell@henning-thielemann.de>
@@ -25,7 +25,7 @@
 Build-Type:       Simple
 
 Source-Repository this
-  Tag:         0.2.2.1
+  Tag:         0.2.3
   Type:        darcs
   Location:    https://hub.darcs.net/thielema/fixed-length/
 
@@ -37,6 +37,7 @@
   Build-Depends:
     tfp >=1.0 && <1.1,
     storable-record >=0.0.3 && <0.1,
+    transformers >=0.5 && <0.6,
     non-empty >=0.2 && <0.4,
     utility-ht >=0.0.1 && <0.1,
     base >=4 && <5
diff --git a/src/Data/FixedLength.hs b/src/Data/FixedLength.hs
--- a/src/Data/FixedLength.hs
+++ b/src/Data/FixedLength.hs
@@ -31,10 +31,12 @@
 import qualified Control.Applicative as App
 import qualified Data.Traversable as Trav
 import qualified Data.Foldable as Fold
+import qualified Data.Functor.Classes as FunctorC
 import qualified Data.List as List
 import Control.Applicative (Applicative, liftA2)
 import Data.Traversable (Traversable, foldMapDefault)
 import Data.Foldable (Foldable, foldMap)
+import Data.Functor.Classes (Eq1, eq1, Show1, showsPrec1)
 import Data.Maybe (Maybe(Nothing, Just))
 import Data.List ((++))
 import Data.Word (Word)
@@ -111,19 +113,29 @@
 
 
 instance (Natural n, Eq a) => Eq (T n a) where
-   xs == ys  =  Fold.and $ zipWith (==) xs ys
+   (==)  =  eq1
 
+instance (Natural n) => Eq1 (T n) where
+   liftEq eq xs ys  =  Fold.and $ zipWith eq xs ys
+
+
 showsPrec :: (Natural n, Show a) => Int -> T n a -> ShowS
-showsPrec p =
+showsPrec = showsPrec1
+
+liftShowsPrec_ :: (Natural n) => (Int -> a -> ShowS) -> Int -> T n a -> ShowS
+liftShowsPrec_ showsPrec_ p =
    P.showParen (p>5) . concatS .
    List.intersperse (P.showString "!:") .
    (++ [P.showString "end"]) .
-   List.map (P.showsPrec 6) . toList
+   List.map (showsPrec_ 6) . toList
 
 instance (Natural n, Show a) => Show (T n a) where
-   showsPrec = showsPrec
+   showsPrec = showsPrec1
 
+instance (Natural n) => Show1 (T n) where
+   liftShowsPrec showsPrec_ _showsList = liftShowsPrec_ showsPrec_
 
+
 toList :: (Natural n) => T n a -> [a]
 toList = Fold.toList
 
@@ -194,6 +206,9 @@
 
 
 newtype Index n = Index (Position n)
+
+instance (Natural n) => Show (Index n) where
+   show i = 'i' : P.show (numFromIndex i)
 
 unpackSucc :: Index (Unary.Succ n) -> Succ (Index n)
 unpackSucc (Index n1) =
