diff --git a/pattern-arrows.cabal b/pattern-arrows.cabal
--- a/pattern-arrows.cabal
+++ b/pattern-arrows.cabal
@@ -1,5 +1,5 @@
 name: pattern-arrows
-version: 0.0.1
+version: 0.0.2
 cabal-version: >=1.4
 build-type: Simple
 license: MIT
diff --git a/src/Control/PatternArrows.hs b/src/Control/PatternArrows.hs
--- a/src/Control/PatternArrows.hs
+++ b/src/Control/PatternArrows.hs
@@ -29,7 +29,11 @@
 --
 -- A pattern is a Kleisli arrow for the @StateT Maybe@ monad. That is, patterns can fail, and can carry user-defined state.
 --
-newtype Pattern u a b = Pattern { runPattern :: A.Kleisli (StateT u Maybe) a b } deriving (C.Category, A.Arrow, A.ArrowZero, A.ArrowPlus)
+newtype Pattern u a b = Pattern { runPattern :: A.Kleisli (StateT u Maybe) a b } deriving (A.Arrow, A.ArrowZero, A.ArrowPlus)
+
+instance C.Category (Pattern u) where
+    id = Pattern (C.id)
+    Pattern p1 . Pattern p2 = Pattern (p1 C.. p2)
 
 instance Functor (Pattern u a) where
   fmap f (Pattern p) = Pattern $ A.Kleisli $ fmap f . A.runKleisli p
