diff --git a/CHANGES.txt b/CHANGES.txt
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,8 @@
 Changelog for HLint
 
+1.9.24
+    #188, improve spotting redundant brackets around patterns
+    #138, reenable redundant where hint
 1.9.23
     #184, require haskell-src-exts-1.17
     #183, allow test_ as a prefix
diff --git a/hlint.cabal b/hlint.cabal
--- a/hlint.cabal
+++ b/hlint.cabal
@@ -1,7 +1,7 @@
 cabal-version:      >= 1.6
 build-type:         Simple
 name:               hlint
-version:            1.9.23
+version:            1.9.24
 license:            BSD3
 license-file:       LICENSE
 category:           Development
@@ -11,7 +11,7 @@
 synopsis:           Source code suggestions
 description:
     HLint gives suggestions on how to improve your source code.
-homepage:           http://community.haskell.org/~ndm/hlint/
+homepage:           https://github.com/ndmitchell/hlint#readme
 bug-reports:        https://github.com/ndmitchell/hlint/issues
 data-dir:           data
 data-files:
diff --git a/src/HSE/Bracket.hs b/src/HSE/Bracket.hs
--- a/src/HSE/Bracket.hs
+++ b/src/HSE/Bracket.hs
@@ -95,6 +95,7 @@
         PParen{} -> True
         PTuple{} -> True
         PList{} -> True
+        PRec{} -> True
         PVar{} -> True
         PApp _ _ [] -> True
         PWildCard{} -> True
diff --git a/src/Hint/Bracket.hs b/src/Hint/Bracket.hs
--- a/src/Hint/Bracket.hs
+++ b/src/Hint/Bracket.hs
@@ -31,8 +31,11 @@
 data Foo = Foo {foo :: (Maybe Foo)} -- @Warning foo :: Maybe Foo
 
 -- pattern bracket reduction
-foo (True) = 1
-foo ((True)) = 1 -- @Error True
+foo (x:xs) = 1
+foo (True) = 1 -- @Error True
+foo ((True)) = 1 -- @Error (True)
+foo (A{}) = True -- A{}
+f x = case x of (Nothing) -> 1; _ -> 2 -- Nothing
 
 -- dollar reduction tests
 no = groupFsts . sortFst $ mr
@@ -99,7 +102,7 @@
         -- f (Maybe (index, parent, gen)) child
         f :: (Data (a S), Annotated a, Uniplate (a S), ExactP a, Pretty (a S), Brackets (a S)) => Maybe (Int,a S,a S -> a S) -> a S -> [Idea]
         f Just{} o@(remParen -> Just x) | isAtom x = bracketError msg o x : g x
-        f Nothing o@(remParen -> Just x) | bad = bracketWarning msg o x : g x
+        f Nothing o@(remParen -> Just x) | bad || isAtom x = (if isAtom x then bracketError else bracketWarning) msg o x : g x
         f (Just (i,o,gen)) v@(remParen -> Just x) | not $ needBracket i o x =
           warn msg o (gen x) [r] : g x
           where
diff --git a/src/Hint/Structure.hs b/src/Hint/Structure.hs
--- a/src/Hint/Structure.hs
+++ b/src/Hint/Structure.hs
@@ -97,7 +97,7 @@
     | prettyPrint test `elem` ["otherwise","True"]
     = [gen "Redundant guard" (Pattern l t pats (UnGuardedRhs an bod) bind) [Delete Stmt (toSS test)]]
 
-hints gen (Pattern l t pats bod (Just bind)) | f bind && False -- disabled due to bug #138
+hints gen (Pattern l t pats bod (Just bind)) | f bind
     = [gen "Redundant where" (Pattern l t pats bod Nothing) []]
     where
         f (BDecls _ x) = null x
