diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,9 +1,13 @@
 `th-desugar` release notes
 ==========================
 
+Version 1.5.4.1
+---------------
+* Fix issue #32, concerning reification of classes with default methods.
+
 Version 1.5.4
 -------------
-* Added
+* Added `expandUnsoundly`
 
 Version 1.5.3
 -------------
diff --git a/Language/Haskell/TH/Desugar/Reify.hs b/Language/Haskell/TH/Desugar/Reify.hs
--- a/Language/Haskell/TH/Desugar/Reify.hs
+++ b/Language/Haskell/TH/Desugar/Reify.hs
@@ -153,7 +153,7 @@
   localDeclarations = lift localDeclarations
 
 instance (DsMonad m, Monoid w) => DsMonad (RWST r w s m) where
-  localDeclarations = lift localDeclarations  
+  localDeclarations = lift localDeclarations
 
 -- | Add a list of declarations to be considered when reifying local
 -- declarations.
@@ -196,14 +196,13 @@
 reifyInDec n decs (NewtypeD _ ty_name tvbs con _)
   | Just info <- maybeReifyCon n decs ty_name (map tvbToType tvbs) [con]
   = Just info
-reifyInDec n decs (ClassD _ _ _ _ sub_decs)
-  | Just info <- firstMatch (reifyInDec n (sub_decs ++ decs)) sub_decs
-  = Just info    -- must necessarily *not* be a method, because type signatures
-                 -- don't reify
 reifyInDec n decs (ClassD _ ty_name tvbs _ sub_decs)
   | Just ty <- findType n sub_decs
   = Just $ ClassOpI n (addClassCxt ty_name tvbs ty)
                     ty_name (findFixity n $ sub_decs ++ decs)
+reifyInDec n decs (ClassD _ _ _ _ sub_decs)
+  | Just info <- firstMatch (reifyInDec n (sub_decs ++ decs)) sub_decs
+  = Just info
 reifyInDec n decs (InstanceD _ _ sub_decs)
   | Just info <- firstMatch reify_in_instance sub_decs
   = Just info
@@ -245,11 +244,11 @@
 mkVarI n decs = mkVarITy n decs (fromMaybe no_type $ findType n decs)
   where
     no_type = error $ "No type information found in local declaration for "
-                      ++ show n    
+                      ++ show n
 
 mkVarITy :: Name -> [Dec] -> Type -> Info
 mkVarITy n decs ty = VarI n ty Nothing (findFixity n decs)
-    
+
 findFixity :: Name -> [Dec] -> Fixity
 findFixity n = fromMaybe defaultFixity . firstMatch match_fixity
   where
@@ -331,8 +330,8 @@
 
     match_rec_sel (n', _, ty) | n `nameMatches` n' = Just ty
     match_rec_sel _                     = Nothing
-    
 
+
 handleBug8884 :: Dec -> Dec
 #if __GLASGOW_HASKELL__ >= 707
 handleBug8884 = id
@@ -343,11 +342,10 @@
     kind_from_maybe = fromMaybe StarT
     tvb_kind (PlainTV _)    = Nothing
     tvb_kind (KindedTV _ k) = Just k
-    
+
     result_kind = kind_from_maybe m_kind
     args_kinds  = map (kind_from_maybe . tvb_kind) tvbs
 
     stupid_kind = mkArrows args_kinds result_kind
 handleBug8884 dec = dec
-#endif    
-
+#endif
diff --git a/Language/Haskell/TH/Desugar/Util.hs b/Language/Haskell/TH/Desugar/Util.hs
--- a/Language/Haskell/TH/Desugar/Util.hs
+++ b/Language/Haskell/TH/Desugar/Util.hs
@@ -10,7 +10,7 @@
 
 module Language.Haskell.TH.Desugar.Util (
   newUniqueName,
-  impossible, 
+  impossible,
   nameOccursIn, allNamesIn, mkTypeName, mkDataName, isDataName,
   stripVarP_maybe, extractBoundNamesStmt,
   concatMapM, mapMaybeM, expectJustM,
@@ -40,7 +40,8 @@
 ----------------------------------------
 
 -- | Like newName, but even more unique (unique across different splices),
--- and with unique @nameBase@s.
+-- and with unique @nameBase@s. Precondition: the string is a valid Haskell
+-- alphanumeric identifier (could be upper- or lower-case).
 newUniqueName :: Quasi q => String -> q Name
 newUniqueName str = do
   n <- qNewName str
@@ -166,7 +167,7 @@
 -- | Extract all Names mentioned in a TH tree.
 allNamesIn :: Data a => a -> [Name]
 allNamesIn = everything (++) $ mkQ [] (:[])
-               
+
 -- | Extract the names bound in a @Stmt@
 extractBoundNamesStmt :: Stmt -> S.Set Name
 extractBoundNamesStmt (BindS pat _) = extractBoundNamesPat pat
@@ -271,4 +272,3 @@
 
 firstMatch :: (a -> Maybe b) -> [a] -> Maybe b
 firstMatch f xs = listToMaybe $ mapMaybe f xs
-    
diff --git a/Test/Splices.hs b/Test/Splices.hs
--- a/Test/Splices.hs
+++ b/Test/Splices.hs
@@ -353,6 +353,10 @@
 #if __GLASGOW_HASKELL__ >= 707
   type family R21 (a :: k) (b :: k) :: k where R21 a b = b
 #endif
+  class XXX a where
+    r22 :: a -> a
+    r22 = id   -- test #32
+
   |]
 
 reifyDecsNames :: [Name]
@@ -362,6 +366,7 @@
 #if __GLASGOW_HASKELL__ >= 707
   , "R21"
 #endif
+  , "r22"
   ]
 
 simplCaseTests :: [Q Exp]
diff --git a/th-desugar.cabal b/th-desugar.cabal
--- a/th-desugar.cabal
+++ b/th-desugar.cabal
@@ -1,5 +1,5 @@
 name:           th-desugar
-version:        1.5.4
+version:        1.5.4.1
 cabal-version:  >= 1.10
 synopsis:       Functions to desugar Template Haskell
 homepage:       http://www.cis.upenn.edu/~eir/packages/th-desugar
@@ -26,7 +26,7 @@
 source-repository this
   type:     git
   location: https://github.com/goldfirere/th-desugar.git
-  tag:      v1.5.4
+  tag:      v1.5.4.1
 
 library
   build-depends:
