diff --git a/Control/Monad/Codensity.hs b/Control/Monad/Codensity.hs
--- a/Control/Monad/Codensity.hs
+++ b/Control/Monad/Codensity.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE RankNTypes #-}
-
 module Control.Monad.Codensity where
 
 import Prelude hiding (fail)
diff --git a/Control/Monad/Morph.hs b/Control/Monad/Morph.hs
--- a/Control/Monad/Morph.hs
+++ b/Control/Monad/Morph.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE RankNTypes #-}
-
 module Control.Monad.Morph where
 
 import Control.Monad
diff --git a/Data/Cotraversable.hs b/Data/Cotraversable.hs
--- a/Data/Cotraversable.hs
+++ b/Data/Cotraversable.hs
@@ -10,15 +10,28 @@
 import Data.Functor.Reverse
 import Data.Proxy
 
+-- | Laws:
+--
+-- * @'cosequence' = 'collect' 'id'@
+--
+-- * @'cosequence' . 'cosequence' = 'id'@
+--
+-- * @'collect' f = 'cosequence' . 'fmap' f@
+--
+-- * @'fmap' f = 'runIdentity' . 'collect' ('Identity' . f)@
+--
+-- * @'fmap' 'distribute' . 'collect' f = 'getCompose' . 'collect' ('Compose' . f)@
 class Functor f => Cotraversable f where
+    {-# MINIMAL collect | cosequence | cotraverse #-}
+
     collect :: Functor g => (a -> f b) -> g a -> f (g b)
     collect f = cosequence . fmap f
 
     cosequence :: Functor g => g (f a) -> f (g a)
-    cosequence = collect id
+    cosequence = cotraverse id
 
     cotraverse :: Functor g => (g a -> b) -> g (f a) -> f b
-    cotraverse f = fmap f . cosequence
+    cotraverse f = fmap f . collect id
 
 instance Cotraversable Identity where
     cosequence = Identity . fmap runIdentity
diff --git a/Data/Fix.hs b/Data/Fix.hs
--- a/Data/Fix.hs
+++ b/Data/Fix.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE RankNTypes #-}
-
 module Data.Fix where
 
 import Control.Arrow
diff --git a/hs-functors.cabal b/hs-functors.cabal
--- a/hs-functors.cabal
+++ b/hs-functors.cabal
@@ -1,5 +1,5 @@
 name:                hs-functors
-version:             0.1.3.0
+version:             0.1.3.1
 synopsis:            Functors from products of Haskell and its dual to Haskell
 -- description:         
 license:             BSD3
@@ -45,4 +45,10 @@
                      , StandaloneDeriving
                      , GeneralizedNewtypeDeriving
                      , DeriveFunctor, DeriveFoldable, DeriveTraversable
-  ghc-options:         -Wall -Wno-name-shadowing
+  ghc-options:         -Wall -Wcompat -Wredundant-constraints -Wno-name-shadowing
+                       -Wincomplete-record-updates -Wincomplete-uni-patterns
+                       -Werror=incomplete-patterns
+                       -Werror=incomplete-uni-patterns
+                       -Werror=incomplete-record-updates
+                       -Werror=missing-fields
+                       -Werror=missing-methods
