diff --git a/Data/Semigroup/Foldable.hs b/Data/Semigroup/Foldable.hs
--- a/Data/Semigroup/Foldable.hs
+++ b/Data/Semigroup/Foldable.hs
@@ -23,6 +23,7 @@
 import Data.Functor.Apply
 import Data.Functor.Product
 import Data.Functor.Compose
+import Data.List.NonEmpty (NonEmpty(..))
 import Data.Semigroup hiding (Product)
 import Data.Monoid hiding (Product)
 import Data.Traversable.Instances ()
@@ -46,6 +47,10 @@
 
 instance (Foldable1 f, Foldable1 g) => Foldable1 (Product f g) where
   foldMap1 f (Pair a b) = foldMap1 f a <> foldMap1 f b
+
+instance Foldable1 NonEmpty where
+  foldMap1 f (a :| []) = f a
+  foldMap1 f (a :| b : bs) = f a <> foldMap1 f (b :| bs)
 
 newtype Act f a = Act { getAct :: f a }
 
diff --git a/Data/Semigroup/Traversable.hs b/Data/Semigroup/Traversable.hs
--- a/Data/Semigroup/Traversable.hs
+++ b/Data/Semigroup/Traversable.hs
@@ -22,6 +22,7 @@
 import Data.Functor.Compose
 import Data.Semigroup.Foldable
 import Data.Traversable
+import Data.List.NonEmpty (NonEmpty(..))
 import Data.Semigroup hiding (Product)
 import Data.Traversable.Instances ()
 
@@ -46,3 +47,7 @@
 
 instance (Traversable1 f, Traversable1 g) => Traversable1 (Product f g) where
   traverse1 f (Pair a b) = Pair <$> traverse1 f a <.> traverse1 f b
+
+instance Traversable1 NonEmpty where
+  traverse1 f (a :| []) = (:|[]) <$> f a
+  traverse1 f (a :| (b: bs)) = (\a' (b':| bs') -> a' :| b': bs') <$> f a <.> traverse1 f (b :| bs)
diff --git a/semigroupoids.cabal b/semigroupoids.cabal
--- a/semigroupoids.cabal
+++ b/semigroupoids.cabal
@@ -1,6 +1,6 @@
 name:          semigroupoids
 category:      Control, Comonads
-version:       1.1.3
+version:       1.2.0
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
@@ -62,8 +62,8 @@
     transformers >= 0.2 && < 0.3,
     containers >= 0.3 && < 0.5,
     contravariant >= 0.1.2 && < 0.2,
-    comonad >= 1.0.3 && < 1.1, 
-    semigroups >= 0.4 && < 0.5,
+    comonad >= 1.1 && < 1.2, 
+    semigroups >= 0.5 && < 0.6,
     bifunctors >= 0.1 && < 0.2
 
   exposed-modules:
