diff --git a/Control/Monad/Reader/Lens.hs b/Control/Monad/Reader/Lens.hs
new file mode 100644
--- /dev/null
+++ b/Control/Monad/Reader/Lens.hs
@@ -0,0 +1,16 @@
+module Control.Monad.Reader.Lens where
+
+import Control.Applicative
+import Control.Category.Unicode
+import Control.Lens as L
+import Control.Monad.Reader hiding (asks, local)
+import qualified Control.Monad.Reader as M
+
+asks :: (MonadReader α m) => ((a -> Const a b) -> α -> Const a β) -> m a
+asks = M.asks ∘ L.get
+
+local :: (MonadReader α m) => Lens α α a b -> (a -> b) -> m c -> m c
+local = M.local ∘∘ L.modify where f ∘∘ g = (f ∘) ∘ g
+
+localM :: (MonadReader α m) => Lens α α a b -> (a -> m b) -> m c -> m c
+localM l f x = M.ask >>= l f >>= flip M.local x ∘ pure
diff --git a/Control/Monad/State/Lens.hs b/Control/Monad/State/Lens.hs
new file mode 100644
--- /dev/null
+++ b/Control/Monad/State/Lens.hs
@@ -0,0 +1,26 @@
+module Control.Monad.State.Lens (gets, puts, state, modify, modifyM) where
+
+import Control.Applicative
+import Control.Category.Unicode
+import Control.Lens (Lens)
+import qualified Control.Lens as L
+import Control.Monad ((>=>))
+import Control.Monad.State (MonadState)
+import qualified Control.Monad.State as M
+import qualified Control.Monad.State.Lazy   as LazyState
+import qualified Control.Monad.State.Strict as StrictState
+
+gets :: (MonadState α m) => ((a -> Const a b) -> α -> Const a α) -> m a
+gets = M.gets ∘ L.get
+
+puts :: (MonadState α m) => Lens α α a b -> b -> m a
+puts l = liftA2 pure (gets l) ∘ M.modify ∘ L.set l
+
+state :: (MonadState α m) => Lens α α a b -> (a -> (c, b)) -> m c
+state l f = f <$> gets l >>= \ (x, s) -> x <$ puts l s
+
+modify :: (MonadState α m) => Lens α α a b -> (a -> b) -> m a
+modify l = liftA2 pure (gets l) ∘ M.modify ∘ L.modify l
+
+modifyM :: (MonadState α m) => Lens α α a b -> (a -> m b) -> m a
+modifyM l f = M.get >>= liftA2 (<$) (L.get l) (l f >=> M.put)
diff --git a/Control/Monad/Writer/Lens.hs b/Control/Monad/Writer/Lens.hs
new file mode 100644
--- /dev/null
+++ b/Control/Monad/Writer/Lens.hs
@@ -0,0 +1,10 @@
+module Control.Monad.Writer.Lens where
+
+import Control.Applicative
+import Control.Category.Unicode
+import Control.Lens as L
+import Control.Monad.Writer hiding (tell)
+import qualified Control.Monad.Writer as M
+
+tells :: (MonadWriter β m, Monoid α) => Lens α β a b -> b -> m ()
+tells l x = M.tell (L.set l x mempty)
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,5 @@
+© Unix year 44 (Strake = M Farkas-Dyck)
+
+Leave to use, copy, modify, and distribute this work for any purpose is hereby granted if the above copyright notice and this license are included.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/lenz-mtl.cabal b/lenz-mtl.cabal
new file mode 100644
--- /dev/null
+++ b/lenz-mtl.cabal
@@ -0,0 +1,27 @@
+name:		lenz-mtl
+version:	0.1
+synopsis:	mtl operations with Van Laarhoven lenses
+license:	OtherLicense
+license-file:	LICENSE
+author:		M Farkas-Dyck
+maintainer:	strake888@gmail.com
+category:	Control, Data, Lenses
+build-type:	Simple
+cabal-version:	>=1.2.3
+tested-with:    GHC ==7.10.3
+              , GHC ==8.0.2
+              , GHC ==8.2.2
+              , GHC ==8.4.4
+              , GHC ==8.6.5
+              , GHC ==8.8.1
+
+library
+  exposed-modules:     Control.Monad.Reader.Lens
+                     , Control.Monad.Writer.Lens
+                     , Control.Monad.State.Lens
+  build-depends:       base >=4.8 && <5
+                     , base-unicode-symbols
+                     , lenz >=0.2 && <0.5
+                     , transformers >=0.2 && <0.6
+                     , mtl >=2.0 && <2.3
+  extensions:          UnicodeSyntax, RankNTypes
