diff --git a/classify.cabal b/classify.cabal
--- a/classify.cabal
+++ b/classify.cabal
@@ -1,6 +1,6 @@
 Cabal-version:  >=1.6
 Name:           classify
-Version:        2012.10.23
+Version:        2013.11.6
 Build-Type:     Simple
 License:        PublicDomain
 License-File:   LICENSE
diff --git a/src/Data/Classify/Parser.hs b/src/Data/Classify/Parser.hs
--- a/src/Data/Classify/Parser.hs
+++ b/src/Data/Classify/Parser.hs
@@ -280,3 +280,35 @@
         rets -> fst (head (sortBy (comparing (length.snd)) rets))
 
 
+
+
+
+
+
+
+
+
+
+
+
+stripName :: String -> [String]
+stripName = nub . map (filter isAlphaNum . filter (not . isSpace)) . expand . map toLower
+  where
+    alts = [ ("the", "")
+           , ("newyork", "ny")
+           , ("los angeles", "la")
+           , ("and", "")
+           , ("&", "and") ]
+    doesMatch key [] = Nothing
+    doesMatch key (x:xs)
+      | fst x `isPrefixOf` key = Just x
+      | otherwise              = doesMatch key xs
+    expand lst = lst : concatMap expand [ before ++ new ++ drop (length old) after
+                 | (before, after) <- split lst
+                 , Just (old, new) <- [doesMatch after alts] ]
+    worker lst = expand lst
+
+split :: String -> [(String,String)]
+split str = zip (inits str) (tails str)
+
+
diff --git a/src/Data/Classify/Rank.hs b/src/Data/Classify/Rank.hs
--- a/src/Data/Classify/Rank.hs
+++ b/src/Data/Classify/Rank.hs
@@ -59,13 +59,17 @@
 -- Tests
 --------------------------------------------------------------
 
-testSeries = Map.fromList [ (P.trunc t,t) | (_,t,_) <- testData]
+testSeries = Map.fromList [ (src,t) | (_,t,_) <- testData, src <- P.stripName t]
 
 v24 = "24"
 simpsons = "The Simpsons"
 colbert = "The Colbert Report"
 palms = "Hidden Palms"
 daily = "The Daily Show"
+ncis = "NCIS"
+ncis_la = "NCIS: Los Angeles"
+law_svu = "Law & Order: SVU"
+mike_molly = "Mike & Molly"
 
 testData = [ ("24.S06E01.6AM.TO.7AM.PROPER.DVDRip.XviD-MEMETiC.avi", "24", Version 6 1)
            , ("The.Simpsons.S18E09.PROPER.PDTV.XviD-2HD.avi", "The Simpsons", Version 18 9)
@@ -111,6 +115,12 @@
            , ("south.park.1109.dsr.xvid-sys.[VTV].avi", "South Park", Version 11 9)
            , ("South Park - 12x09 - Breast Cancer Show Ever.avi", "South Park", Version 12 9)
            , ("Merlin 2008 5x03 The Death Song Of Uther Pendragon REPACK HDTV x264-FoV", "Merlin", Version 5 3)
+           , ("NCIS Los Angeles S05E07 HDTV x264-LOL", ncis_la, Version 5 7)
+           , ("NCIS S11E07 HDTV x264-LOL", ncis, Version 11 7)
+           , ("NCIS LA 4x14 (HDTV-x264-LOL) [VTV]", ncis_la, Version 4 14)
+           , ("Law and Order SVU S14E14 HDTV x264-LOL", law_svu, Version 14 14)
+           , ("Law & Order SVU 14x13 (HDTV-x264-LOL) [VTV]", law_svu, Version 14 13)
+           , ("Mike and Molly S04E01 HDTV x264-LOL", mike_molly, Version 4 1)
            ]
 
 runTests = flip mapM_ testData $ \(str, series, expectedVersion) ->
diff --git a/src/Data/Classify/Television.hs b/src/Data/Classify/Television.hs
--- a/src/Data/Classify/Television.hs
+++ b/src/Data/Classify/Television.hs
@@ -26,7 +26,7 @@
 
 import qualified Data.Map as Map
 import Data.Char                      ( isAlphaNum, isSpace, toLower )
-import Data.List                      ( inits, tails, isPrefixOf )
+import Data.List                      ( inits, tails, isPrefixOf, nub )
 
 tryClassify :: [Name] -> String -> Maybe (Name, Version, Title)
 tryClassify knownNames inp =
@@ -45,20 +45,3 @@
     Nothing     -> error $ "Data.Classify.Television.classify: Failed to parse: " ++ show inp
     Just result -> result
 
-stripName :: String -> [String]
-stripName = worker . filter isAlphaNum . filter (not . isSpace) . map toLower
-  where
-    alts = [ ("the", "")
-           , ("newyork", "ny")
-           , ("los angeles", "la") ]
-    doesMatch key [] = Nothing
-    doesMatch key (x:xs)
-      | fst x `isPrefixOf` key = Just x
-      | otherwise              = doesMatch key xs
-    expand lst = lst : concatMap expand [ before ++ new ++ drop (length old) after
-                 | (before, after) <- split lst
-                 , Just (old, new) <- [doesMatch after alts] ]
-    worker lst = expand lst
-
-split :: String -> [(String,String)]
-split str = zip (inits str) (tails str)
