diff --git a/Control/Comonad/Contra.hs b/Control/Comonad/Contra.hs
new file mode 100644
--- /dev/null
+++ b/Control/Comonad/Contra.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE MultiParamTypeClasses #-}
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Control.Comonad.Contra
+-- Copyright   :  (C) 2011 Edward Kmett
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>
+-- Stability   :  provisional
+-- Portability :  MPTCs, fundeps
+--
+-- Use a contravariant dual adjunction from Hask^op to build a 'Monad' to 
+-- 'Comonad' transformer.
+----------------------------------------------------------------------------
+
+module Control.Comonad.Contra
+  ( Contra
+  , runContra
+  , contra
+  , ContraT(..)
+  ) where
+
+import Prelude hiding (sequence)
+import Control.Comonad
+import Control.Monad (liftM)
+import Data.Functor.Identity
+import Data.Functor.Contravariant
+import Data.Functor.Contravariant.DualAdjunction
+
+type Contra f g = ContraT f g Identity
+
+newtype ContraT f g m a = ContraT { runContraT :: f (m (g a)) }
+
+contra :: Contravariant f => f (g a) -> Contra f g a
+contra = ContraT . contramap runIdentity
+
+runContra :: Contravariant f => Contra f g a -> f (g a)
+runContra = contramap Identity . runContraT
+
+instance (Contravariant f, Contravariant g, Monad m) => Functor (ContraT f g m) where
+  fmap f (ContraT g) = ContraT $ contramap (liftM (contramap f)) g
+  
+instance (DualAdjunction f g, Monad m) => Comonad (ContraT f g m) where
+  extract = rightAdjunctOp return . runContraT
+  extend f = ContraT . contramap (>>= leftAdjunctOp (f . ContraT)) . runContraT
+
diff --git a/adjunctions.cabal b/adjunctions.cabal
--- a/adjunctions.cabal
+++ b/adjunctions.cabal
@@ -1,6 +1,6 @@
 name:          adjunctions
 category:      Data Structures, Adjunctions
-version:       0.3
+version:       0.3.1
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
@@ -26,9 +26,10 @@
     transformers >= 0.2.0 && < 0.3
 
   exposed-modules:
+    Control.Comonad.Contra
+    Control.Comonad.Trans.Adjoint
     Control.Monad.Contra
     Control.Monad.Trans.Adjoint
-    Control.Comonad.Trans.Adjoint
     Data.Functor.Adjunction
     Data.Functor.Contravariant.Adjunction
     Data.Functor.Contravariant.DualAdjunction
