diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,14 @@
+0.2.0.0
+Remove functions which are superseded by upstream
+
+`containers` has added take, drop, restrictKeys and withoutKeys which are
+equivalent to take, drop, keepKeys and dropKeys from the map-exts API,
+respectively. takeLeft/Right and dropLeft/Right have been exposed.
+
+containers:drop/take correspond to dropLeft and takeLeft respectively.
+
+map-exts is now compatible with lts-10.3
+
 0.1.1.0
 Add version bound for upstream containers
 
diff --git a/map-exts.cabal b/map-exts.cabal
--- a/map-exts.cabal
+++ b/map-exts.cabal
@@ -1,5 +1,5 @@
 name:                map-exts
-version:             0.1.1.0
+version:             0.2.0.0
 synopsis:            Extensions to Data.Map
 description:         Extensions to Data.Map
 homepage:            http://github.com/charles-cooper/map-exts#readme
@@ -26,7 +26,7 @@
   other-modules:       Data.Map.Function
   default-language:    Haskell2010
   build-depends:       base          >= 4.7 && < 5,
-                       containers    >= 0.5 && < 0.5.8.1
+                       containers    >= 0.5.8.1 && < 0.6
 executable example
   hs-source-dirs:      examples, src
   main-is:             Main.hs
diff --git a/src/Data/Map/Extensions.hs b/src/Data/Map/Extensions.hs
--- a/src/Data/Map/Extensions.hs
+++ b/src/Data/Map/Extensions.hs
@@ -1,25 +1,24 @@
 {-|
-	Module      : Data.Map.Extensions
-	Description : Extensions to Data.Map
-	Copyright   : (c) Elsen, Inc., 2016
-	License     : BSD3
-	Maintainer  : cooper.charles.m@gmail.com
-	Stability   : experimental
-	Portability : portable
+  Module      : Data.Map.Extensions
+  Description : Extensions to Data.Map
+  Copyright   : (c) Elsen, Inc., 2016
+  License     : BSD3
+  Maintainer  : cooper.charles.m@gmail.com
+  Stability   : experimental
+  Portability : portable
 
   This module is a drop-in replacement for `Data.Map`. It is intended to be imported as @import qualified Data.Map.Extensions as Map@.
 -}
 module Data.Map.Extensions (
   module Data.Map,
 
-  drop,
-  take,
+  dropLeft,
+  dropRight,
+  takeLeft,
+  takeRight,
   slice,
   slicei,
 
-  keepKeys,
-  dropKeys,
-
   filterM,
   transpose,
 
@@ -111,25 +110,29 @@
     True  -> empty
     False -> slice m lv rv                     -- O(log n)
 
+-- O(n * log n). this could be O(log n) if we used Map.split cleverly.
+-- | Drops `n` elements from the (left hand side of the) `Map`.
 dropLeft :: Int -> Map k v -> Map k v
 dropLeft n m | n <= 0      = m
              | Map.null m  = m
              | otherwise   = dropLeft (n-1) (deleteMin m)
 
+-- O(n * log n). this could be O(log n) if we used Map.split cleverly.
+-- | Drops `n` elements from the (right hand side of the) `Map`.
 dropRight :: Int -> Map k v -> Map k v
 dropRight n m | n <= 0     = m
               | Map.null m = m
               | otherwise  = dropRight (n-1) (deleteMax m)
 
 -- O(n * log n). this could be O(log n) if we used Map.split cleverly.
--- | Drops `n` elements from the (left hand side of the) `Map`.
-drop :: Int -> Map k v -> Map k v
-drop = dropLeft
+-- | Takes `n` elements from the (left hand side of the) `Map`.
+takeLeft :: Int -> Map k v -> Map k v
+takeLeft n m = dropRight (Map.size m - n) m
 
 -- O(n * log n). this could be O(log n) if we used Map.split cleverly.
--- | Takes `n` elements from the (left hand side of the) `Map`.
-take :: Int -> Map k v -> Map k v
-take n m = dropRight (Map.size m - n) m
+-- | Takes `n` elements from the (right hand side of the) `Map`.
+takeRight :: Int -> Map k v -> Map k v
+takeRight n m = dropLeft (Map.size m - n) m
 
 -- | This generalizes `Map.filter` to a monadic predicate.
 filterM :: (Ord k, Monad m) => (v -> m Bool) -> Map k v -> m (Map k v)
@@ -171,14 +174,6 @@
 -- O(n * log(n))
 groupBy :: Ord b => (a -> b) -> [a] -> Map b [a]
 groupBy f = fromListWith (++) . fmap (\a -> (f a, pure a))
-
--- | Only keep keys that occur in the supplied `Set`.
-keepKeys :: Ord k => Set k -> Map k a -> Map k a
-keepKeys keys m = intersection m (fromSet (const ()) keys)
-
--- | Drop the keys occurring in the supplied `Set`.
-dropKeys :: Ord k => Set k -> Map k a -> Map k a
-dropKeys keys m = m \\ (fromSet (const ()) keys)
 
 -- | Create a Map from a list of keys and a list of values.
 --
