diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for barbies-th
 
+## 0.1.2
+
+* `declareBareB` now derives `DistributiveD`
+
 ## 0.1.1 -- 2020/04/19
 
 * Improved the deriving mechanism; deriving clauses within `declareBareB` are translated into `deriving via Barbie ...`
diff --git a/barbies-th.cabal b/barbies-th.cabal
--- a/barbies-th.cabal
+++ b/barbies-th.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                barbies-th
-version:             0.1.1
+version:             0.1.2
 synopsis:            Create strippable HKD via TH
 description:         Please see Data.Barbie.TH
 bug-reports:         https://github.com/fumieval/barbies-th
@@ -8,7 +8,7 @@
 license-file:        LICENSE
 author:              Fumiaki Kinoshita
 maintainer:          fumiexcel@gmail.com
-copyright:           Copyright (c) 2019 Fumiaki Kinoshita
+copyright:           Copyright (c) 2020 Fumiaki Kinoshita
 category:            Data, Generics
 extra-source-files:  CHANGELOG.md, README.md
 
@@ -16,8 +16,8 @@
   exposed-modules:     Data.Barbie.TH
   other-extensions:    RankNTypes, PolyKinds, DataKinds, KindSignatures, TemplateHaskell, TypeFamilies
   build-depends:       base >= 4.12
-    , template-haskell >= 2.14 && <2.16
-    , barbies ^>= 2.0
+    , template-haskell >= 2.14 && <2.17
+    , barbies ^>= 2.0.1
   hs-source-dirs:      src
   default-language:    Haskell2010
   ghc-options: -Wall
diff --git a/src/Data/Barbie/TH.hs b/src/Data/Barbie/TH.hs
--- a/src/Data/Barbie/TH.hs
+++ b/src/Data/Barbie/TH.hs
@@ -25,6 +25,7 @@
 import GHC.Generics (Generic)
 import Control.Applicative
 import Data.Functor.Identity (Identity(..))
+import Data.Functor.Compose (Compose(..))
 
 -- | barbies doesn't care about field names, but they are useful in many use cases
 class FieldNamesB b where
@@ -32,8 +33,9 @@
   bfieldNames :: IsString a => b (Const a)
 
 -- | Transform a regular Haskell record declaration into HKD form.
--- 'BareB', 'FieldNamesB', 'FunctorB', 'TraversableB', 'ApplicativeB' and
--- 'ConstraintsB' instances are derived.
+-- 'BareB', 'FieldNamesB', 'FunctorB', 'DistributiveB',
+-- 'TraversableB', 'ApplicativeB' and 'ConstraintsB' instances are
+-- derived.
 --
 -- For example,
 --
@@ -88,6 +90,12 @@
               appE
               (conE conName)
               (appE (varE 'f) . varE <$> xs)
+            )
+        instance DistributiveB $(datC) where
+          bdistribute fb = $(foldl'
+              appE
+              (conE conName)
+              [ [| Compose ($(varE fd) <$> fb) |] | (fd, _, _) <- fields ]
             )
         instance TraversableB $(datC) where
           btraverse f $(conP conName $ map varP xs) = $(fst $ foldl'
