diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,8 @@
 # Changelog for barbies
 
+## 2.0.5.0
+  - Add helper class Barbies.Constraints.(&) (#46)
+
 ## 2.0.4.0
   - Add FunctorT and DistributiveT instances for AccumT
 
diff --git a/barbies.cabal b/barbies.cabal
--- a/barbies.cabal
+++ b/barbies.cabal
@@ -1,5 +1,5 @@
 name:           barbies
-version:        2.0.4.0
+version:        2.0.5.0
 synopsis:       Classes for working with types that can change clothes.
 description:    Types that are parametric on a functor are like Barbies that have an outfit for each role. This package provides the basic abstractions to work with them comfortably.
 category:       Data Structures
diff --git a/src/Barbies/Constraints.hs b/src/Barbies/Constraints.hs
--- a/src/Barbies/Constraints.hs
+++ b/src/Barbies/Constraints.hs
@@ -13,6 +13,9 @@
   , AllBF
   , ClassF
   , ClassFG
+
+    -- * Helpers
+  , type (&)
   )
 
 where
diff --git a/src/Barbies/Internal/ConstraintsB.hs b/src/Barbies/Internal/ConstraintsB.hs
--- a/src/Barbies/Internal/ConstraintsB.hs
+++ b/src/Barbies/Internal/ConstraintsB.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE TypeFamilies         #-}
 {-# LANGUAGE PolyKinds            #-}
 {-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE UndecidableSuperClasses #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 module Barbies.Internal.ConstraintsB
   ( ConstraintsB(..)
@@ -16,6 +17,8 @@
   , bzipWith4C
   , bfoldMapC
 
+  , type (&)
+
   , CanDeriveConstraintsB
   , gbaddDictsDefault
   , GAllRepB
@@ -105,6 +108,8 @@
     => b f -> b (Dict c `Product` f)
   baddDicts = gbaddDictsDefault
 
+class (c a, d a) => (c & d) a where
+instance (c a, d a) => (c & d) a where
 
 -- | Like 'bmap' but a constraint is allowed to be required on
 --   each element of @b@
@@ -117,6 +122,11 @@
 -- >   where
 -- >     showField :: forall a. Show a => Identity a -> Const String a
 -- >     showField (Identity a) = Const (show a)
+--
+-- Notice that one can use the '(&)' class as a way to require several
+-- constraiints to hold simultaneously:
+--
+-- > bmap @(Show & Eq & Enum) r
 bmapC :: forall c b f g
       .  (AllB c b, ConstraintsB b)
       => (forall a. c a => f a -> g a)
