diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,3 @@
+## 0.1.0.0
+
+* Initial release
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2016 Michael Snoyman, http://www.fpcomplete.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,5 @@
+## mono-traversable-instances
+
+Extra typeclass instances for mono-traversable
+
+Set up this way to allow mono-traversable itself to have minimal dependencies
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/mono-traversable-instances.cabal b/mono-traversable-instances.cabal
new file mode 100644
--- /dev/null
+++ b/mono-traversable-instances.cabal
@@ -0,0 +1,32 @@
+name:                mono-traversable-instances
+version:             0.1.0.0
+synopsis:            Extra typeclass instances for mono-traversable
+description:         Please see README.md
+homepage:            https://github.com/snoyberg/mono-traversable#readme
+license:             MIT
+license-file:        LICENSE
+author:              Michael Snoyman
+maintainer:          michael@fpcomplete.com
+category:            Data
+build-type:          Simple
+extra-source-files:  README.md ChangeLog.md
+cabal-version:       >=1.10
+
+library
+  hs-source-dirs:      src
+  exposed-modules:     Data.MonoTraversable.Instances
+  build-depends:       base >= 4.7 && < 5
+                     , mono-traversable >= 1.0 && < 1.1
+                     , semigroupoids >=3.0
+                     , comonad >= 3.0.3
+                     , vector-instances
+                     , dlist >= 0.6 && < 1.0
+                     , dlist-instances == 0.1.*
+                     , transformers
+                     , semigroups
+                     , containers
+  default-language:    Haskell2010
+
+source-repository head
+  type:     git
+  location: https://github.com/snoyberg/mono-traversable
diff --git a/src/Data/MonoTraversable/Instances.hs b/src/Data/MonoTraversable/Instances.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/MonoTraversable/Instances.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE CPP                     #-}
+{-# LANGUAGE TypeFamilies            #-}
+{-# OPTIONS_GHC -fno-warn-orphans    #-}
+module Data.MonoTraversable.Instances () where
+
+import Data.DList.Instances ()
+import           Data.Traversable.Instances ()
+import Data.Functor.Apply (MaybeApply (..), WrappedApplicative)
+import Control.Comonad (Cokleisli, Comonad, extract, extend)
+import Control.Comonad.Store (StoreT)
+import Control.Comonad.Env (EnvT)
+import Control.Comonad.Traced (TracedT)
+import Data.DList (DList)
+import Data.Semigroupoid.Static (Static)
+import qualified Data.DList as DL
+import Data.Vector.Instances ()
+import Data.MonoTraversable
+import Data.Sequences
+#if !MIN_VERSION_base(4,8,0)
+import Control.Monad (liftM)
+#endif
+import Control.Monad.Trans.Identity (IdentityT)
+import Data.Semigroup (Arg)
+import Data.List.NonEmpty (NonEmpty)
+import Data.Functor.Identity (Identity)
+import Data.Tree (Tree)
+import Data.Traversable (traverse)
+import Control.Applicative (Applicative)
+import Data.Monoid (Monoid)
+
+#if !MIN_VERSION_comonad(5,0,0)
+import Data.Functor.Coproduct (Coproduct)
+#endif
+
+type instance Element (DList a) = a
+instance MonoFoldable (DList a) where
+    otoList = DL.toList
+    headEx = DL.head
+    {-# INLINE otoList #-}
+    {-# INLINE headEx #-}
+instance MonoTraversable (DList a) where
+     otraverse f = fmap DL.fromList . Data.Traversable.traverse f . DL.toList
+#if !MIN_VERSION_base(4,8,0)
+     omapM f = liftM DL.fromList . mapM f . DL.toList
+#endif
+instance MonoFunctor (DList a)
+instance MonoPointed (DList a)
+instance GrowingAppend (DList a)
+
+instance SemiSequence (DList a) where
+    type Index (DList a) = Int
+    cons = DL.cons
+    snoc = DL.snoc
+
+    reverse = defaultReverse
+    sortBy = defaultSortBy
+    intersperse = defaultIntersperse
+    find = defaultFind
+    {-# INLINE intersperse #-}
+    {-# INLINE reverse #-}
+    {-# INLINE find #-}
+    {-# INLINE sortBy #-}
+    {-# INLINE cons #-}
+    {-# INLINE snoc #-}
+
+instance IsSequence (DList a) where
+    fromList = DL.fromList
+    replicate = DL.replicate
+    tailEx = DL.tail
+    {-# INLINE fromList #-}
+    {-# INLINE replicate #-}
+    {-# INLINE tailEx #-}
+
+type instance Element (Cokleisli w a b) = b
+instance MonoFunctor (Cokleisli w a b)
+instance MonoPointed (Cokleisli w a b)
+
+type instance Element (WrappedApplicative f a) = a
+instance Control.Applicative.Applicative f => MonoPointed (WrappedApplicative f a)
+instance Functor f => MonoFunctor (WrappedApplicative f a)
+
+type instance Element (MaybeApply f a) = a
+instance Functor f => MonoFunctor (MaybeApply f a)
+instance MonoPointed (MaybeApply f a) where
+    opoint = MaybeApply . Right
+    {-# INLINE opoint #-}
+
+type instance Element (TracedT m w a) = a
+instance (Comonad w, Data.Monoid.Monoid m) => MonoComonad (TracedT m w a) where
+    oextract = extract
+    oextend = extend
+instance Functor w => MonoFunctor (TracedT m w a)
+
+type instance Element (StoreT s w a) = a
+instance Comonad w => MonoComonad (StoreT s w a) where
+    oextract = extract
+    oextend = extend
+instance Functor w => MonoFunctor (StoreT s w a)
+
+type instance Element (EnvT e w a) = a
+instance Comonad w => MonoComonad (EnvT e w a) where
+    oextract = extract
+    oextend = extend
+instance Functor w => MonoFunctor (EnvT e w a)
+
+#if !MIN_VERSION_comonad(5,0,0)
+type instance Element (Coproduct f g a) = a
+instance (Functor f, Functor g) => MonoFunctor (Coproduct f g a)
+instance (Comonad f, Comonad g) => MonoComonad (Coproduct f g a) where
+    oextract = extract
+    oextend = extend
+#endif
+
+type instance Element (Static f a b) = b
+instance Applicative f => MonoPointed (Static f a b)
+instance Functor f => MonoFunctor (Static f a b)
+
+instance Comonad w => MonoComonad (IdentityT w a) where
+    oextract = extract
+    oextend = extend
+
+-- Comonad
+instance MonoComonad (Tree a) where
+    oextract = extract
+    oextend = extend
+instance MonoComonad (NonEmpty a) where
+    oextract = extract
+    oextend = extend
+instance MonoComonad (Identity a) where
+    oextract = extract
+    oextend = extend
+instance Monoid m => MonoComonad (m -> a) where
+    oextract = extract
+    oextend = extend
+instance MonoComonad (e, a) where
+    oextract = extract
+    oextend = extend
+instance MonoComonad (Arg a b) where
+    oextract = extract
+    oextend = extend
