diff --git a/functor-combo.cabal b/functor-combo.cabal
--- a/functor-combo.cabal
+++ b/functor-combo.cabal
@@ -1,5 +1,5 @@
 Name:                functor-combo
-Version:             0.0.6
+Version:             0.0.7
 Cabal-Version:       >= 1.2
 Synopsis:            Functor combinators with tries & zippers
 Category:            Data
diff --git a/src/FunctorCombo/DHoley.hs b/src/FunctorCombo/DHoley.hs
--- a/src/FunctorCombo/DHoley.hs
+++ b/src/FunctorCombo/DHoley.hs
@@ -111,7 +111,7 @@
 
 -- type instance Der (g :.  f) = Der g :. f  :*:  Der f
 
-
+{-
 lassoc :: (p,(q,r)) -> ((p,q),r)
 lassoc    (p,(q,r)) =  ((p,q),r)
 
@@ -126,6 +126,21 @@
 
 tweak2 :: Functor f => (dg (f a), f (df a, a)) -> f (((dg :. f) :*: df) a, a)
 tweak2 = (fmap.first) chainRule . tweak1
+-}
+
+-- Sjoerd Visscher wrote <http://conal.net/blog/posts/another-angle-on-zippers/#comment-51328>:
+
+-- At first it was a bit disappointing that extract is so complicated for
+-- functor composition, but I played a bit with the code and tweak2 can be
+-- simplified (if I didn’t make a mistake) to:
+
+-- tweak2 (dgfa, fl) = (fmap.first) (O dgfa :*:) fl
+
+-- It’s interesting that (tweak2 . second extract) is very much like down!
+-- Probably because Fix f is like repeated functor composition of f.
+
+tweak2 :: Functor f => (dg (f a), f (df a, a)) -> f (((dg :. f) :*: df) a, a)
+tweak2 (dgfa, fl) = (fmap.first) (O dgfa :*:) fl
 
 -- And more specifically,
 -- 
diff --git a/src/FunctorCombo/ZipperFix.hs b/src/FunctorCombo/ZipperFix.hs
--- a/src/FunctorCombo/ZipperFix.hs
+++ b/src/FunctorCombo/ZipperFix.hs
@@ -87,7 +87,7 @@
 -}
 
 down :: Holey f => Zipper f -> f (Zipper f)
-down (ds', t) = fmap (first (:ds')) (extract (unFix t))
+down (ds', t) = (fmap.first) (:ds') (extract (unFix t))
 
 -- down (ds', t) = fmap (\ (d,t') -> (d:ds',t')) (extract (unFix t))
 
@@ -104,7 +104,7 @@
 
 extract (unFix t) :: f (Der f (Fix f), Fix f)
 
-fmap (\ (d,t') -> (d:ds',t')) (extract (unFix t))
+(fmap.first) (:ds') (extract (unFix t))
   :: ([Der f (Fix f)], Fix f)
   :: (Context f, Fix f)
   :: Zipper f
diff --git a/src/FunctorCombo/ZipperReg.hs b/src/FunctorCombo/ZipperReg.hs
--- a/src/FunctorCombo/ZipperReg.hs
+++ b/src/FunctorCombo/ZipperReg.hs
@@ -58,7 +58,7 @@
 up' l          = Just (up l)
 
 down :: (Regular t, Holey (PF t)) => Zipper t -> PF t (Zipper t)
-down (ds', t) = fmap (first (:ds')) (extract (unwrap t))
+down (ds', t) = (fmap.first) (:ds') (extract (unwrap t))
 
 {-
 
