diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+3.8.1
+-----
+* Fixed a bug in `makeFields` in hierarchical modules.
+
 3.8.0.2
 -------
 * Fixed an issue with running the `doctests` test suite when an older version of `semigroups` is installed.
diff --git a/lens.cabal b/lens.cabal
--- a/lens.cabal
+++ b/lens.cabal
@@ -1,6 +1,6 @@
 name:          lens
 category:      Data, Lenses
-version:       3.8.0.2
+version:       3.8.1
 license:       BSD3
 cabal-version: >= 1.8
 license-file:  LICENSE
diff --git a/src/Control/Lens/Internal/Indexed.hs b/src/Control/Lens/Internal/Indexed.hs
--- a/src/Control/Lens/Internal/Indexed.hs
+++ b/src/Control/Lens/Internal/Indexed.hs
@@ -61,9 +61,8 @@
 -- that @f@ is left adjoint to @g@. From this you can derive a lot of structure due
 -- to the preservation of limits and colimits.
 class
-  ( Profunctor p, Choice p, Strong p
-  , Corepresentable p, Comonad (Corep p), Traversable (Corep p)
-  , Representable p, Monad (Rep p), MonadFix (Rep p), Distributive (Rep p)
+  ( Choice p, Corepresentable p, Comonad (Corep p), Traversable (Corep p)
+  , Strong p, Representable p, Monad (Rep p), MonadFix (Rep p), Distributive (Rep p)
   , ArrowLoop p, ArrowApply p, ArrowChoice p
   ) => Conjoined p where
 
diff --git a/src/Control/Lens/TH.hs b/src/Control/Lens/TH.hs
--- a/src/Control/Lens/TH.hs
+++ b/src/Control/Lens/TH.hs
@@ -779,9 +779,6 @@
     , _fieldClassLensName :: Name
     }
 
-unqualify :: String -> String
-unqualify = tail . dropWhile (/= '.')
-
 overHead :: (a -> a) -> [a] -> [a]
 overHead _ []     = []
 overHead f (x:xs) = f x : xs
@@ -824,7 +821,7 @@
         _   -> [])
   where
     namer (n', _, _) = do
-        let field   = unqualify (show n')
+        let field   = nameBase n'
             rawlens = mkName (raw' field)
         prefix <- prefix' field
         nice   <- mkName <$> nice' field
