diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
 Usage
 -----
 
-Cgrep 6.5.2 Usage: cgrep [OPTION] [PATTERN] files...
+Cgrep 6.5.3 Usage: cgrep [OPTION] [PATTERN] files...
 
 cgrep [OPTIONS] [ITEM]
 
diff --git a/cgrep.cabal b/cgrep.cabal
--- a/cgrep.cabal
+++ b/cgrep.cabal
@@ -1,6 +1,6 @@
 Name:                cgrep
 Description:         Cgrep: a context-aware grep for source codes
-Version:             6.5.2
+Version:             6.5.3
 Synopsis:            Command line tool
 Homepage:            http://awgn.github.io/cgrep/
 License:             GPL-2
diff --git a/src/CGrep/Common.hs b/src/CGrep/Common.hs
--- a/src/CGrep/Common.hs
+++ b/src/CGrep/Common.hs
@@ -59,7 +59,7 @@
 quickSearch :: Options -> [Text8] -> Text8 -> Maybe Bool
 quickSearch opt ps text
     | no_turbo opt        = Nothing
-    | otherwise           = Just $ any has_pattern ps
+    | otherwise           = Just $ any has_pattern ps || null ps
     where has_pattern pat = notNull $ pat `SC.nonOverlappingIndices` text
 
 
diff --git a/src/CGrep/Semantic/WildCard.hs b/src/CGrep/Semantic/WildCard.hs
--- a/src/CGrep/Semantic/WildCard.hs
+++ b/src/CGrep/Semantic/WildCard.hs
@@ -17,12 +17,10 @@
 --
 
 module CGrep.Semantic.WildCard (WildCard(..), MultiCard,
-                                wildCardMap,
                                 mkWildCardFromToken,
                                 combineMultiCard,
                                 filterTokensWithMultiCards,
                                 wildCardMatch,
-                                isWildCardPattern,
                                 multiCardMatch) where
 
 import qualified Data.Map as M
@@ -36,6 +34,7 @@
 import Options
 import Util
 
+
 data WildCard a =
     TokenCard a        |
     AnyCard            |
@@ -50,6 +49,7 @@
         deriving (Show, Eq, Ord)
 
 
+
 type MultiCard a = [WildCard a]
 
 
@@ -70,10 +70,11 @@
 mkWildCardFromToken :: (SemanticToken a) => a -> WildCard a
 mkWildCardFromToken t
     | tkIsIdentifier t = case () of
-                            _ | Just wc <- M.lookup str wildCardMap -> wc
-                              | isWildCardPattern str  -> IdentifCard str
-                              | otherwise              -> TokenCard $ tkToIdentif (rmWildCardEscape str) (tkToOffset t)
-                              where str = tkToString t
+        _ | Just wc <- M.lookup str wildCardMap -> wc
+          | isWildCardIdentif str               -> IdentifCard str
+          | otherwise                           -> TokenCard $ tkToIdentif (rmWildCardEscape str) (tkToOffset t)
+            where str = tkToString t
+
     | otherwise = TokenCard t
 
 
@@ -118,19 +119,18 @@
         where ts = multiCardGroupCompare opt l r
 
 
-isWildCardPattern :: String -> Bool
-isWildCardPattern s =
+isWildCardIdentif :: String -> Bool
+isWildCardIdentif s =
     case () of
-        _ | (x:y:_) <- s  -> wprefix x && not (wprefix y)
+        _ | (x:y:_) <- s  -> wprefix x && isNumber y
           | [x]     <- s  -> wprefix x
-          | otherwise     -> error "isWildCardPattern"
+          | otherwise     -> error "isWildCardIdentif"
     where wprefix x = x == '$' || x == '_'
 
 
 rmWildCardEscape :: String -> String
-rmWildCardEscape ('$':'_':xs) = '_' : xs
-rmWildCardEscape ('_':'_':xs) = '_' : xs
-rmWildCardEscape ('$':'$':xs) = '$' : xs
+rmWildCardEscape ('$':xs) = xs
+rmWildCardEscape ('_':xs) = xs
 rmWildCardEscape xs = xs
 
 
@@ -143,7 +143,7 @@
 {-# INLINE multiCardCheckOccurences #-}
 
 -- Note: pattern $ and _ match any token, whereas $1 $2 (_1 _2 etc.) match tokens
---       that must compare equal in the relative occurrences
+--       that must compare equal in the respective occurrences
 --
 
 multiCardCheckOccurences :: (SemanticToken a) => [(Bool, (MultiCard a, [String]))] -> Bool
diff --git a/src/CGrep/Strategy/Cpp/Semantic.hs b/src/CGrep/Strategy/Cpp/Semantic.hs
--- a/src/CGrep/Strategy/Cpp/Semantic.hs
+++ b/src/CGrep/Strategy/Cpp/Semantic.hs
@@ -58,12 +58,13 @@
 
     -- quick Search...
 
-        ps' = filter (/= "OR") $ (mapMaybe (\x -> case x of
-                                                    TokenCard (Cpp.TokenChar   xs _) -> Just (rmQuote $ trim xs)
-                                                    TokenCard (Cpp.TokenString xs _) -> Just (rmQuote $ trim xs)
-                                                    TokenCard t                      -> Just (Cpp.toString t)
-                                                    _                                -> Nothing
-                                            ) . concat) patterns'
+        ps' = (mapMaybe (\x -> case x of
+                            TokenCard (Cpp.TokenChar   xs _) -> Just (rmQuote $ trim xs)
+                            TokenCard (Cpp.TokenString xs _) -> Just (rmQuote $ trim xs)
+                            TokenCard (Cpp.TokenIdentifier "OR" _) -> Nothing
+                            TokenCard t                            -> Just (Cpp.toString t)
+                            _                                      -> Nothing
+                        ) . concat) patterns'
 
         found = quickSearch opt (map C.pack ps') text'
 
diff --git a/src/CGrep/Strategy/Generic/Semantic.hs b/src/CGrep/Strategy/Generic/Semantic.hs
--- a/src/CGrep/Strategy/Generic/Semantic.hs
+++ b/src/CGrep/Strategy/Generic/Semantic.hs
@@ -59,11 +59,12 @@
 
     -- quickSearch ...
 
-        ps' = filter (/= "OR") $ (mapMaybe (\x -> case x of
-                                                    TokenCard (Generic.TokenLiteral xs _) -> Just (rmQuote $ trim xs)
-                                                    TokenCard t                           -> Just (tkToString t)
-                                                    _                                     -> Nothing
-                                            ) . concat) patterns'
+        ps' = (mapMaybe (\x -> case x of
+                            TokenCard (Generic.TokenLiteral xs _) -> Just (rmQuote $ trim xs)
+                            TokenCard (Generic.TokenAlpha "OR" _) -> Nothing
+                            TokenCard t                           -> Just (tkToString t)
+                            _                                     -> Nothing
+                            ) . concat) patterns'
 
         found = quickSearch opt (map C.pack ps') text'
 
diff --git a/src/Config.hs b/src/Config.hs
--- a/src/Config.hs
+++ b/src/Config.hs
@@ -31,7 +31,7 @@
 cgreprc = "cgreprc"
 
 version :: String
-version = "6.5.2"
+version = "6.5.3"
 
 
 data Config = Config
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -68,11 +68,11 @@
                xs <- getDirectoryContents dir
                (dirs,files) <- partitionM doesDirectoryExist [dir </> x | x <- xs, x `notElem` [".", ".."]]
                -- process files
-               let files' = flip mapMaybe files
+               let files' = mapMaybe
                                 (\n -> let filename = takeFileName n
                                        in if isNothing $ getFileLang opts filename >>= (\f -> f `elemIndex` langs <|> toMaybe 0 (null langs))
                                             then Nothing
-                                            else Just n)
+                                            else Just n) files
 
                unless (null files') $
                     let chunks = chunksOf (Options.chunk opts) files' in
diff --git a/src/Util.hs b/src/Util.hs
--- a/src/Util.hs
+++ b/src/Util.hs
@@ -25,12 +25,11 @@
 
 import Data.Maybe
 import Data.Char
-import Control.Monad
 
 -- from hlint :-)
 
 partitionM :: Monad m => (a -> m Bool) -> [a] -> m ([a], [a])
-partitionM f [] = return ([], [])
+partitionM _ [] = return ([], [])
 partitionM f (x:xs) = do
     res <- f x
     (as,bs) <- partitionM f xs
