diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # composition-prelude
 
+# 2.0.1.0
+
+  * Add `dup` for tuples
+
 # 2.0.0.0
 
   * Fix fixity of various operators
diff --git a/composition-prelude.cabal b/composition-prelude.cabal
--- a/composition-prelude.cabal
+++ b/composition-prelude.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: composition-prelude
-version: 2.0.0.0
+version: 2.0.1.0
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2017-2018 Vanessa McHale
@@ -33,9 +33,9 @@
     ghc-options: -Wall
     build-depends:
         base >=4.11 && <5
-    
+
     if flag(development)
         ghc-options: -Werror
-    
+
     if impl(ghc >=8.0)
         ghc-options: -Wincomplete-uni-patterns -Wincomplete-record-updates
diff --git a/src/Control/Composition.hs b/src/Control/Composition.hs
--- a/src/Control/Composition.hs
+++ b/src/Control/Composition.hs
@@ -37,6 +37,8 @@
     , threadM
     -- * Tuple helpers
     , both
+    , dup
+    -- J inspired: `&:`, `,` etc.
     -- * Reëxports from base
     , (<=<)
     , (>=>)
@@ -87,6 +89,9 @@
 both :: (a -> b) -> (a, a) -> (b, b)
 both = join (***)
 
+dup :: a -> (a, a)
+dup = join (,)
+
 -- | Backwards function application
 (-$) :: (a -> b -> c) -> b -> a -> c
 (-$) = flip
@@ -96,7 +101,7 @@
 -- > λ:> ((*2) .* (+)) 1 3 4
 -- > 16
 (.*) :: (c -> d) -> (a -> b -> c) -> a -> b -> d
-(.*) f g = \x y -> f (g x y) -- FIXME use lambda approach for better inlining? Like (.) does
+(.*) f g = \x y -> f (g x y)
 
 (.**) :: (d -> e) -> (a -> b -> c -> d) -> a -> b -> c -> e
 (.**) f g = \x y z -> f (g x y z)
