diff --git a/Data/Profunctor/Corepresentable.hs b/Data/Profunctor/Corepresentable.hs
new file mode 100644
--- /dev/null
+++ b/Data/Profunctor/Corepresentable.hs
@@ -0,0 +1,29 @@
+
+{-# LANGUAGE TypeFamilies, FlexibleContexts, UndecidableInstances #-}
+module Data.Profunctor.Corepresentable 
+  ( CorepresentableProfunctor(..) 
+  ) where
+
+import Data.Profunctor
+import Control.Arrow
+import Data.Functor.Identity
+
+class Functor (Corep k) => CorepresentableProfunctor k where
+  type Corep k :: * -> *
+  cotabulatePro :: (d -> Corep k c) -> k d c
+  coindexPro :: k d c -> d -> Corep k c 
+  
+instance CorepresentableProfunctor (->) where
+  type Corep (->) = Identity
+  cotabulatePro f = runIdentity . f
+  coindexPro f = Identity . f 
+
+instance Functor m => CorepresentableProfunctor (Kleisli m) where
+  type Corep (Kleisli m) = m
+  cotabulatePro = Kleisli
+  coindexPro = runKleisli 
+
+instance Functor f => CorepresentableProfunctor (UpStar f) where
+  type Corep (UpStar f) = f
+  cotabulatePro = UpStar
+  coindexPro = runUpStar
diff --git a/Data/Profunctor/Representable.hs b/Data/Profunctor/Representable.hs
new file mode 100644
--- /dev/null
+++ b/Data/Profunctor/Representable.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE TypeFamilies, FlexibleContexts, UndecidableInstances #-}
+module Data.Profunctor.Representable 
+  ( RepresentableProfunctor(..) 
+  ) where
+
+import Data.Profunctor
+import Control.Comonad
+import Data.Functor.Identity
+
+class Functor (Rep k) => RepresentableProfunctor k where
+  type Rep k :: * -> *
+  tabulatePro :: (Rep k d -> c) -> k d c
+  indexPro :: k d c -> Rep k d -> c 
+  
+instance RepresentableProfunctor (->) where
+  type Rep (->) = Identity
+  tabulatePro f = f . Identity
+  indexPro f (Identity d) = f d
+
+instance Functor w => RepresentableProfunctor (Cokleisli w) where
+  type Rep (Cokleisli w) = w 
+  tabulatePro = Cokleisli
+  indexPro = runCokleisli 
+
+instance Functor f => RepresentableProfunctor (DownStar f) where
+  type Rep (DownStar f) = f
+  tabulatePro = DownStar
+  indexPro = runDownStar
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright 2011 Edward Kmett
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the author nor the names of his contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,7 @@
+#!/usr/bin/runhaskell
+> module Main (main) where
+
+> import Distribution.Simple
+
+> main :: IO ()
+> main = defaultMain
diff --git a/representable-profunctors.cabal b/representable-profunctors.cabal
new file mode 100644
--- /dev/null
+++ b/representable-profunctors.cabal
@@ -0,0 +1,33 @@
+name:          representable-profunctors
+category:      Control, Categories
+version:       0.1
+license:       BSD3
+cabal-version: >= 1.6
+license-file:  LICENSE
+author:        Edward A. Kmett
+maintainer:    Edward A. Kmett <ekmett@gmail.com>
+stability:     experimental
+homepage:      git://github.com/ekmett/representable-profunctors/
+copyright:     Copyright (C) 2011 Edward A. Kmett
+synopsis:      Representable profunctors
+description:   Representable profunctors
+build-type:    Simple
+
+source-repository head
+  type: git
+  location: git://github.com/ekmett/representable-profunctors.git
+
+library
+  build-depends: 
+    base >= 4 && < 5,
+    semigroupoids >= 1.2.2 && <= 1.3,
+    comonad >= 1.1 && < 1.2,
+    profunctors >= 0.1.1 && < 0.2,
+    profunctor-extras >= 0.1.1 && < 0.2,
+    transformers >= 0.2.2.0 && < 0.3
+
+  exposed-modules:
+    Data.Profunctor.Representable
+    Data.Profunctor.Corepresentable
+
+  ghc-options:      -Wall 
