diff --git a/Data/List/Split.hs b/Data/List/Split.hs
--- a/Data/List/Split.hs
+++ b/Data/List/Split.hs
@@ -28,7 +28,6 @@
                        -- * Convenience functions
                        -- $conv
 
-
                          splitOn
                        , splitOneOf
                        , splitWhen
@@ -39,6 +38,9 @@
 
                        , unintercalate
 
+                       , wordsBy
+                       , linesBy
+
                        -- * Other splitting methods
                        -- $other
                        , splitEvery
@@ -60,9 +62,8 @@
                        , whenElt
 
                        -- ** Strategy transformers
-                       --
-                       -- $ Functions for altering splitting strategy
-                       --   parameters.
+                       -- $transform
+
                        , dropDelims
                        , keepDelimsL
                        , keepDelimsR
@@ -71,10 +72,8 @@
                        , dropFinalBlank
 
                        -- ** Derived combinators
-                       --
-                       -- $ Combinators which can be defined in terms of
-                       --   other combinators, but are provided for
-                       --   convenience.
+                       -- $derived
+
                        , dropBlanks
                        , startsWith
                        , startsWithOneOf
@@ -139,3 +138,9 @@
 -- All these basic strategies have the same parameters as the
 -- 'defaultSplitter' except for the delimiter.
 
+-- $transform
+-- Functions for altering splitting strategy parameters.
+
+-- $derived
+-- Combinators which can be defined in terms of other combinators, but
+-- are provided for convenience.
diff --git a/Data/List/Split/Internals.hs b/Data/List/Split/Internals.hs
--- a/Data/List/Split/Internals.hs
+++ b/Data/List/Split/Internals.hs
@@ -423,6 +423,22 @@
 unintercalate :: Eq a => [a] -> [a] -> [[a]]
 unintercalate = sepBy
 
+-- | Split into words, with word boundaries indicated by the given
+--   predicate.  Satisfies @words === wordsBy isSpace@; equivalent to
+--   @split . dropBlanks . dropDelims . whenElt@.  For example:
+--
+-- > wordsBy (=='x') "dogxxxcatxbirdxx" == ["dog","cat","bird"]
+wordsBy :: (a -> Bool) -> [a] -> [[a]]
+wordsBy = split . dropBlanks . dropDelims . whenElt
+
+-- | Split into lines, with line boundaries indicated by the given
+--   predicate. Satisfies @lines === linesBy (=='\n')@; equivalent to
+--   @split . dropFinalBlank . dropDelims . whenElt@.  For example:
+--
+-- > linesBy (=='x') "dogxxxcatxbirdxx" == ["dog","","","cat","bird",""]
+linesBy :: (a -> Bool) -> [a] -> [[a]]
+linesBy = split . dropFinalBlank . dropDelims . whenElt
+
 -- * Other splitting methods
 
 -- | @'splitEvery' n@ splits a list into length-n pieces.  The last
diff --git a/Properties.hs b/Properties.hs
--- a/Properties.hs
+++ b/Properties.hs
@@ -105,6 +105,8 @@
             , ("splitPlaces/last <= n",         qc prop_splitPlaces_last_less_n)
             , ("splitPlaces/preserve",          qc prop_splitPlaces_preserve)
             , ("lines",                         qc prop_lines)
+            , ("wordsBy/words",                 qc prop_wordsBy_words)
+            , ("linesBy/lines",                 qc prop_linesBy_lines)
             ]
 
 prop_default_id :: [Elt] -> Bool
@@ -291,12 +293,20 @@
 mInit [x] = []
 mInit (x:xs) = x : init xs
 
-newtype EltNL = EltNL { unEltNL :: Char }
+newtype EltWS = EltWS { unEltWS :: Char }
   deriving (Eq, Show)
 
-instance Arbitrary EltNL where
-  arbitrary = elements (map EltNL "abcde\n")
+instance Arbitrary EltWS where
+  arbitrary = elements (map EltWS "abcde \n")
 
-prop_lines :: [EltNL] -> Bool
+prop_lines :: [EltWS] -> Bool
 prop_lines s = lines s' == endBy "\n" s'
-  where s' = map unEltNL s
+  where s' = map unEltWS s
+
+prop_wordsBy_words :: [EltWS] -> Bool
+prop_wordsBy_words s = words s' == wordsBy isSpace s'
+  where s' = map unEltWS s
+
+prop_linesBy_lines :: [EltWS] -> Bool
+prop_linesBy_lines s = lines s' == linesBy (=='\n') s'
+  where s' = map unEltWS s
diff --git a/split.cabal b/split.cabal
--- a/split.cabal
+++ b/split.cabal
@@ -1,5 +1,5 @@
 Name:                split
-Version:             0.1
+Version:             0.1.1
 Stability:           experimental
 Description:         Combinator library and utility functions for splitting lists.
 Homepage:            http://code.haskell.org/~byorgey/code/split
@@ -18,8 +18,6 @@
   default: False
 
 library
-  ghc-options:         -Wall
-  if flag(testing)
-    ghc-options: -Werror
+  ghc-options:       -Wall
   Build-Depends:     base
   Exposed-Modules:   Data.List.Split, Data.List.Split.Internals
