diff --git a/ListLike.cabal b/ListLike.cabal
--- a/ListLike.cabal
+++ b/ListLike.cabal
@@ -1,5 +1,5 @@
 Name: ListLike
-Version: 4.1.0
+Version: 4.1.1
 License: BSD3
 Maintainer: John Lato <jwlato@gmail.com>
 Author: John Goerzen
@@ -48,10 +48,10 @@
                 ,containers >= 0.3   && < 0.6
                 ,bytestring >= 0.9.1 && < 0.11
                 ,array      >= 0.3   && < 0.6
-                ,text       >= 0.11  && < 1.2
+                ,text       >= 0.11  && < 1.3
                 ,vector     >= 0.5   && < 0.11
                 ,dlist      >= 0.7   && < 0.9
-                ,fmlist     >= 0.8   && < 0.9
+                ,fmlist     >= 0.8   && < 0.10
   
 Test-suite listlike-tests
   Hs-source-dirs: src testsrc
diff --git a/src/Data/ListLike.hs b/src/Data/ListLike.hs
--- a/src/Data/ListLike.hs
+++ b/src/Data/ListLike.hs
@@ -51,7 +51,7 @@
                  -- ** Unfolding
                  -- * Sublists
                  -- ** Extracting sublists
-                 take, drop, splitAt, takeWhile, dropWhile, span, break,
+                 take, drop, splitAt, takeWhile, dropWhile, dropWhileEnd, span, break,
                  group, inits, tails, 
                  -- ** Predicates
                  isPrefixOf, isSuffixOf, isInfixOf,
@@ -112,11 +112,11 @@
 import Prelude hiding (length, head, last, null, tail, map, filter, concat, 
                        any, lookup, init, all, foldl, foldr, foldl1, foldr1,
                        maximum, minimum, iterate, span, break, takeWhile,
-                       dropWhile, reverse, zip, zipWith, sequence,
+                       dropWhile, dropWhileEnd, reverse, zip, zipWith, sequence,
                        sequence_, mapM, mapM_, concatMap, and, or, sum,
                        product, repeat, replicate, cycle, take, drop,
                        splitAt, elem, notElem, unzip, lines, words,
-                       unlines, unwords)
+                       unlines, unwords, foldMap)
 import Data.ListLike.Base
 import Data.ListLike.CharString
 import Data.ListLike.FoldableLL
diff --git a/src/Data/ListLike/Base.hs b/src/Data/ListLike/Base.hs
--- a/src/Data/ListLike/Base.hs
+++ b/src/Data/ListLike/Base.hs
@@ -37,11 +37,11 @@
 import Prelude hiding (length, head, last, null, tail, map, filter, concat, 
                        any, lookup, init, all, foldl, foldr, foldl1, foldr1,
                        maximum, minimum, iterate, span, break, takeWhile,
-                       dropWhile, reverse, zip, zipWith, sequence,
+                       dropWhile, dropWhileEnd, reverse, zip, zipWith, sequence,
                        sequence_, mapM, mapM_, concatMap, and, or, sum,
                        product, repeat, replicate, cycle, take, drop,
                        splitAt, elem, notElem, unzip, lines, words,
-                       unlines, unwords)
+                       unlines, unwords, foldMap)
 import qualified Data.List as L
 import Data.ListLike.FoldableLL
 import qualified Control.Monad as M
@@ -216,13 +216,18 @@
         | otherwise = empty
         where x = head l
 
-    {- | Drops all elements form the start of the list that satisfy the
+    {- | Drops all elements from the start of the list that satisfy the
        function. -}
     dropWhile :: (item -> Bool) -> full -> full
     dropWhile func l
         | null l = empty
         | func (head l) = dropWhile func (tail l)
         | otherwise = l
+
+    {- | Drops all elements from the end of the list that satisfy the
+       function. -}
+    dropWhileEnd :: (item -> Bool) -> full -> full
+    dropWhileEnd func = foldr (\x xs -> if func x && null xs then empty else cons x xs) empty
 
     {- | The equivalent of @('takeWhile' f xs, 'dropWhile' f xs)@ -}
     span :: (item -> Bool) -> full -> (full, full)
diff --git a/src/Data/ListLike/FoldableLL.hs b/src/Data/ListLike/FoldableLL.hs
--- a/src/Data/ListLike/FoldableLL.hs
+++ b/src/Data/ListLike/FoldableLL.hs
@@ -30,7 +30,7 @@
      -- * Utilities
      fold, foldMap, foldM, sequence_, mapM_
     ) where 
-import Prelude hiding (foldl, foldr, foldr1, sequence_, mapM_)
+import Prelude hiding (foldl, foldr, foldr1, sequence_, mapM_, foldMap)
 import qualified Data.Foldable as F
 import Data.Monoid
 import Data.Maybe
diff --git a/src/Data/ListLike/Utils.hs b/src/Data/ListLike/Utils.hs
--- a/src/Data/ListLike/Utils.hs
+++ b/src/Data/ListLike/Utils.hs
@@ -35,7 +35,7 @@
                        sequence_, mapM, mapM_, concatMap, and, or, sum,
                        product, repeat, replicate, cycle, take, drop,
                        splitAt, elem, notElem, unzip, lines, words,
-                       unlines, unwords)
+                       unlines, unwords, foldMap)
 import Control.Monad (MonadPlus(..))
 import Data.ListLike.Base
 import Data.ListLike.FoldableLL
diff --git a/testsrc/runtests.hs b/testsrc/runtests.hs
--- a/testsrc/runtests.hs
+++ b/testsrc/runtests.hs
@@ -91,6 +91,8 @@
                               (takeWhile func (LL.toList f))
 prop_dropWhile f func = llcmp (LL.dropWhile func f) 
                               (dropWhile func (LL.toList f))
+prop_dropWhileEnd f func = llcmp (LL.dropWhileEnd func f)
+                                 (dropWhileEnd func (LL.toList f))
 prop_span f func = 
     llcmp [(\(x, y) -> (LL.toList x, LL.toList y)) . LL.span func $ f]
           [span func (LL.toList f)]
@@ -258,6 +260,7 @@
         apf "splitAt" (t prop_splitAt),
         apf "takeWhile" (t prop_takeWhile),
         apf "dropWhile" (t prop_dropWhile),
+        apf "dropWhileEnd" (t prop_dropWhileEnd),
         apf "span" (t prop_span),
         apf "break" (t prop_break),
         apf "group" (t prop_group),
