diff --git a/Data/Thrist.hs b/Data/Thrist.hs
--- a/Data/Thrist.hs
+++ b/Data/Thrist.hs
@@ -1,10 +1,10 @@
-{-# LANGUAGE GADTs, RankNTypes, KindSignatures, FlexibleInstances, TypeOperators #-}
-module Data.Thrist ( 
+{-# LANGUAGE GADTs, RankNTypes, KindSignatures, FlexibleInstances, TypeOperators, PolyKinds #-}
+module Data.Thrist (
       -- * Types:
         Thrist (..)
       , Flipped (..)
       -- * Fold and map functions:
-      , mapThrist 
+      , mapThrist
       , foldrThrist
       , foldlThrist
       , foldr1Thrist
@@ -15,6 +15,7 @@
       -- * Other list-like functions:
       , appendThrist
       , nullThrist
+      , lengthThrist
       ) where
 
 import Prelude hiding ((.), id)
@@ -25,107 +26,107 @@
 
 
 -- | A type-threaded list of binary polymorphic types.
-data Thrist :: (* -> * -> *) -> * -> * -> * where
-  Nil :: Thrist (~>) a a
-  Cons :: (a ~> b) -> Thrist (~>) b c -> Thrist (~>) a c
+data Thrist :: (k -> k -> *) -> k -> k -> * where
+  Nil :: Thrist arr a a
+  Cons :: (a `arr` b) -> Thrist arr b c -> Thrist arr a c
 
-instance Monoid (Thrist (~>) a a) where
+instance Monoid (Thrist arr a a) where
   mempty  = Nil
   mappend = appendThrist
 
-instance (Arrow (~>)) => Arrow (Thrist (~>)) where
+instance (Arrow arr) => Arrow (Thrist arr) where
   arr f     = Cons (arr f) Nil
   first Nil = Nil
   first t   = Cons ((foldrThrist (flip (.)) id t) *** id) Nil
 
-instance Category (Thrist (~>)) where
+instance Category (Thrist arr) where
   id    = Nil
   b . a = appendThrist a b
 
 
 -- | A newtype wrapper, defined for convenience, that "swaps" the two type
--- variables of a binary type. Can be used to reverse a Thrist using 
+-- variables of a binary type. Can be used to reverse a Thrist using
 -- `foldlThrist`. See examples.
 newtype Flipped m a b = Flipped { unflip :: m b a }
 
 
 -- | Equivalent to `foldr` for thrists. Takes a combining function, a value to
 -- replace Nil, and a thrist, returning some new binary type.
-foldrThrist :: (forall i j . (i ~> j) -> (j +> c) -> (i +> c)) 
-            -> (b +> c) 
-            -> Thrist (~>) a b 
-            -> (a +> c)
+foldrThrist :: (forall i j . (i `arr` j) -> (j `brr` c) -> (i `brr` c))
+            -> (b `brr` c)
+            -> Thrist arr a b
+            -> (a `brr` c)
 foldrThrist _ v Nil        = v
 foldrThrist f v (Cons h t) = h `f` (foldrThrist f v t)
 
--- | Equivalent to (++) for thrists. 
-appendThrist :: Thrist (~>) a b -> Thrist (~>) b c -> Thrist (~>) a c
+-- | Equivalent to (++) for thrists.
+appendThrist :: Thrist arr a b -> Thrist arr b c -> Thrist arr a c
 appendThrist = flip (foldrThrist Cons)
 
--- | Equivalent to `map` for thrists. Takes a function from one binary type to 
--- another and applies it to each thrist element. For example this could 
+-- | Equivalent to `map` for thrists. Takes a function from one binary type to
+-- another and applies it to each thrist element. For example this could
 -- convert a thrist of (a,b) into a thrist of Either a b:
-mapThrist :: (forall i j . (i +> j) -> (i ~> j)) 
-          -> Thrist (+>) a b 
-          -> Thrist (~>) a b
-mapThrist f = foldrThrist (Cons . f) Nil 
+mapThrist :: (forall i j . (i `brr` j) -> (i `arr` j))
+          -> Thrist brr a b
+          -> Thrist arr a b
+mapThrist f = foldrThrist (Cons . f) Nil
 
 
 -- | Equivalent to `foldl` for `Thrist`s.
-foldlThrist :: (forall j k . (a +> j) -> (j ~> k) -> (a +> k)) 
-            -> (a +> b) 
-            -> Thrist (~>) b c 
-            -> (a +> c)
+foldlThrist :: (forall j k . (a `brr` j) -> (j `arr` k) -> (a `brr` k))
+            -> (a `brr` b)
+            -> Thrist arr b c
+            -> (a `brr` c)
 foldlThrist _ v Nil        = v
-foldlThrist f v (Cons h t) = foldlThrist f (v `f` h) t 
+foldlThrist f v (Cons h t) = foldlThrist f (v `f` h) t
 
 
 
 -- | Equivalent to `foldl1` for `Thrist`s.
-foldl1Thrist :: (forall i j k. (i ~> j) -> (j ~> k) -> (i ~> k))
-             -> Thrist (~>) a b
-             -> (a ~> b)
+foldl1Thrist :: (forall i j k. (i `arr` j) -> (j `arr` k) -> (i `arr` k))
+             -> Thrist arr a b
+             -> (a `arr` b)
 foldl1Thrist f (Cons a th) = foldlThrist f a th
 foldl1Thrist _ Nil         = error "empty thrist"
 
-    
 
+
 -- | Equivalent to `foldr1` for `Thrist`s.
-foldr1Thrist :: (forall i j k. (i ~> j) -> (j ~> k) -> (i ~> k))
-             -> Thrist (~>) a b
-             -> (a ~> b)
+foldr1Thrist :: (forall i j k. (i `arr` j) -> (j `arr` k) -> (i `arr` k))
+             -> Thrist arr a b
+             -> (a `arr` b)
 foldr1Thrist _ (Cons b Nil) = b
 foldr1Thrist f (Cons a th)  = f a $ foldr1Thrist f th
 foldr1Thrist _ Nil          = error "empty thrist"
 
 
 
--- | Equivalent to `mapM` on `Thrist`s. 
-mapMThrist :: Monad m => 
-             (forall i j . (i +> j) -> m (i ~> j)) 
-           -> Thrist (+>) a b 
-           -> m (Thrist (~>) a b)
+-- | Equivalent to `mapM` on `Thrist`s.
+mapMThrist :: Monad m =>
+             (forall i j . (i `brr` j) -> m (i `arr` j))
+           -> Thrist brr a b
+           -> m (Thrist arr a b)
 mapMThrist _ Nil        = return Nil
 mapMThrist f (Cons h t) = liftM2 Cons (f h) (mapMThrist f t)
 
 
 -- | Equivalent to `foldM` on `Thrist`s.
-foldMThrist :: Monad m => 
-               (forall j k . (a +> j) -> (j ~> k) -> m (a +> k)) 
-            -> (a +> b) 
-            -> Thrist (~>) b c 
-            -> m (a +> c)
+foldMThrist :: Monad m =>
+               (forall j k . (a `brr` j) -> (j `arr` k) -> m (a `brr` k))
+            -> (a `brr` b)
+            -> Thrist arr b c
+            -> m (a `brr` c)
 foldMThrist _ a Nil        = return a
 foldMThrist f a (Cons h t) = f a h >>= \fah -> foldMThrist f fah t
 
 
 
 -- | Returns `True` when the Thrist is `Nil`.
-nullThrist :: Thrist (~>) a b -> Bool
+nullThrist :: Thrist arr a b -> Bool
 nullThrist Nil = True
 nullThrist _   = False
 
 -- | Returns the length of the Thrist.
-lengthThrist :: Thrist (~>) a b -> Int
+lengthThrist :: Thrist arr a b -> Int
 lengthThrist Nil = 0
 lengthThrist (Cons _ rest) = 1 + lengthThrist rest
diff --git a/Data/Thrist/List.hs b/Data/Thrist/List.hs
--- a/Data/Thrist/List.hs
+++ b/Data/Thrist/List.hs
@@ -1,7 +1,7 @@
 module Data.Thrist.List ( List(..) ) where
 
 import Data.Thrist
-import Control.Monad
+import Control.Monad()
 
 -- Adapter for creating lists:
 --   (Thrist List a a) is isomorphic to [a]
diff --git a/examples.hs b/examples.hs
--- a/examples.hs
+++ b/examples.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE TypeOperators #-}
+
 module Main
     where
 
@@ -6,7 +8,7 @@
 
 
 -- identity function on thrists in terms of foldrThrist:
-idThrist :: Thrist (~>) a c -> Thrist (~>) a c
+idThrist :: Thrist arr a c -> Thrist arr a c
 idThrist = foldrThrist Cons Nil
 
 
diff --git a/thrist.cabal b/thrist.cabal
--- a/thrist.cabal
+++ b/thrist.cabal
@@ -1,9 +1,9 @@
 Name:                thrist
-Version:             0.2.2
+Version:             0.3
 Synopsis:            Type-threaded list
 
 Description:
-    Thrist is a list-like data structure (GADT)
+    @Thrist@ is a list-like data structure (GADT)
     whose elements are values of a two-parameter
     datatype. The typing constraint ensures that
     the second type parameter of a former value
@@ -21,6 +21,14 @@
     For further ideas, please consult the companion
     (draft) paper \"Thrists: Dominoes of Data\" at
     <http://omega.googlecode.com/files/Thrist-draft-2011-11-20.pdf>
+    .
+    Release history:
+    .
+    [0.3] Support for (GHC v7.6.1) @PolyKinds@ extension, this compiler is required now
+    .
+    [0.2] Several new functions introduced, some renamed
+    .
+    [0.1] Initial version
 
 Category:            Data Structures
 License:             BSD3
@@ -33,7 +41,7 @@
 Bug-Reports:         mailto:ggreif+thrist@gmail.com
 
 Stability:           experimental
-Tested-With:         GHC == 7.0.4, GHC == 7.2.2
+Tested-With:         GHC == 7.6.1
 Cabal-Version:       >= 1.6
 Extra-Source-Files:  examples.hs
 Build-Type:          Simple
@@ -43,7 +51,7 @@
   Location: http://patch-tag.com/r/heisenbug/thrist/
 
 Library
-    Build-Depends:       base >= 4 && < 5
+    Build-Depends:       base >= 4.6 && < 5
     Exposed-Modules:     Data.Thrist Data.Thrist.List Data.Thrist.Monad
-    Extensions:          GADTs, RankNTypes, KindSignatures, FlexibleInstances, TypeOperators, FlexibleContexts
+    Extensions:          GADTs, RankNTypes, KindSignatures, FlexibleInstances, TypeOperators
     Ghc-Options:         -Wall
