diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 1.0.13.0
+* Added `WrappedPoly` to `Data.MonoTraversable`
+  [#180](https://github.com/snoyberg/mono-traversable/pull/180)
+
 ## 1.0.12.0
 * Added `filterSet` to `Data.Containers`
 * Use container specific implementations for `filterSet` and `filterMap`
diff --git a/mono-traversable.cabal b/mono-traversable.cabal
--- a/mono-traversable.cabal
+++ b/mono-traversable.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: bb2c95aee7a253f7f93bf9fb96eeb108b577eb9e3bf4015d290187a0f4dafc28
+-- hash: f15c018a84778989ad8a6b3271167acba04984c689d9620523b6855ce2ec78f1
 
 name:           mono-traversable
-version:        1.0.12.0
+version:        1.0.13.0
 synopsis:       Type classes for mapping, folding, and traversing monomorphic containers
 description:    Please see the README at <https://www.stackage.org/package/mono-traversable>
 category:       Data
@@ -39,7 +39,7 @@
       src
   ghc-options: -Wall
   build-depends:
-      base >=4.9 && <5
+      base >=4.10 && <5
     , bytestring >=0.9
     , containers >=0.5.8
     , hashable
diff --git a/src/Data/MonoTraversable.hs b/src/Data/MonoTraversable.hs
--- a/src/Data/MonoTraversable.hs
+++ b/src/Data/MonoTraversable.hs
@@ -1,11 +1,13 @@
 {-# LANGUAGE ConstrainedClassMethods #-}
 {-# LANGUAGE CPP                     #-}
 {-# LANGUAGE DefaultSignatures       #-}
+{-# LANGUAGE DerivingStrategies      #-}
 {-# LANGUAGE FlexibleContexts        #-}
 {-# LANGUAGE FlexibleInstances       #-}
 {-# LANGUAGE TypeFamilies            #-}
 {-# LANGUAGE TypeOperators           #-}
 {-# LANGUAGE UndecidableInstances    #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 -- | Type classes mirroring standard typeclasses, but working with monomorphic containers.
 --
 -- The motivation is that some commonly used data types (i.e., 'ByteString' and
@@ -1382,3 +1384,27 @@
         ointercalate x = T.intercalate x . otoList #-}
 {-# RULES "intercalate LText" forall x.
         ointercalate x = TL.intercalate x . otoList #-}
+
+-- | Provides a `MonoFoldable`, `MonoFunctor` or `MonoPointed` for an arbitrary
+-- `F.Foldable`, `Functor` or `Applicative`.
+--
+-- Useful for, e.g., passing a `F.Foldable` type you don't own into a
+-- function that expects a `MonoFoldable`.
+--
+-- > // package A
+-- > data MyList a = MyList [a] deriving Foldable
+-- >
+-- > // package B
+-- > process :: MonoFoldable mono => mono -> IO ()
+-- >
+-- > // package C
+-- > process (WrappedPoly (MyList []))
+--
+-- @since 1.0.13.0
+newtype WrappedPoly f a = WrappedPoly { unwrapPoly :: f a }
+    deriving newtype (F.Foldable, Functor, Applicative, Monad)
+
+type instance Element (WrappedPoly f a) = a
+instance F.Foldable f  => MonoFoldable (WrappedPoly f a)
+instance Functor f     => MonoFunctor (WrappedPoly f a)
+instance Applicative f => MonoPointed (WrappedPoly f a)
