diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.1.1.0
+=======
+
+  * `Bifunctor`, `Biapply`, `Bifoldable`, `Bitraversable`
+
 0.1.0.0
 =======
 
diff --git a/meep.cabal b/meep.cabal
--- a/meep.cabal
+++ b/meep.cabal
@@ -1,5 +1,5 @@
 name:                meep
-version:             0.1.0.0
+version:             0.1.1.0
 synopsis:
   A silly container
 description:
@@ -22,13 +22,14 @@
 source-repository this
   type:     git
   location: https://github.com/supki/meep
-  tag:      0.1.0.0
+  tag:      0.1.1.0
 
 library
   default-language:
     Haskell2010
   build-depends:
       base       >= 4.6 && < 5
+    , bifunctors >= 4   && < 5
     , lens       >= 4   && < 5
     , semigroups >= 0.9 && < 1
   hs-source-dirs:
@@ -43,6 +44,7 @@
     exitcode-stdio-1.0
   build-depends:
       base >= 4.6
+    , bifunctors
     , hspec
     , hspec-expectations-lens >= 0.3
     , lens
diff --git a/src/Data/Meep.hs b/src/Data/Meep.hs
--- a/src/Data/Meep.hs
+++ b/src/Data/Meep.hs
@@ -29,12 +29,15 @@
   , elems
   ) where
 
-import Control.Applicative (pure)
+import Control.Applicative (pure, liftA2)
 import Control.Lens
+import Data.Bifoldable (Bifoldable(..))
+import Data.Bifunctor.Apply (Biapply(..))
+import Data.Bitraversable (Bitraversable(..))
 import Data.Monoid (mempty)
 import Data.Data (Data, Typeable)
 import Data.Foldable (Foldable)
-import Data.Semigroup (Semigroup(..))
+import Data.Semigroup (Semigroup(..), Monoid(..))
 import GHC.Generics (Generic)
 import Prelude hiding (null, lookup)
 #ifdef TEST
@@ -55,6 +58,23 @@
   Empty    <> _          = Empty
   _        <> Empty      = Empty
   Meep k v <> Meep k' v' = bool Empty (Meep k (v <> v')) (k == k')
+
+instance Bifunctor Meep where
+  bimap _ _ Empty = Empty
+  bimap f g (Meep k v) = Meep (f k) (g v)
+
+instance Biapply Meep where
+  Empty      <<.>> _        = Empty
+  _          <<.>> Empty    = Empty
+  Meep fk fv <<.>> Meep k v = Meep (fk k) (fv v)
+
+instance Bifoldable Meep where
+  bifoldMap _ _ Empty = mempty
+  bifoldMap f g (Meep k v) = f k `mappend` g v
+
+instance Bitraversable Meep where
+  bitraverse _ _ Empty = pure Empty
+  bitraverse f g (Meep k v) = liftA2 Meep (f k) (g v)
 
 instance Eq k => Ixed (Meep k a) where
   ix = ixAt
