diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Changelog for passman
 
+## 0.3.0
+
+- updated to more recent LTS snapshot
+- use microlens instead of lens
+
 ## 0.2.1
 
 - refactoring
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 # passman
 
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
@@ -22,7 +22,6 @@
 
 module Main where
 
-import Control.Monad (mapM_)
 import Control.Monad.Trans.State as S
 import System.Console.HCL (Request, reqIO, runRequest)
 import System.EasyFile
diff --git a/app/Types.hs b/app/Types.hs
--- a/app/Types.hs
+++ b/app/Types.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
@@ -24,7 +24,8 @@
 
 module Types (Status (Status), gen, dbPath, masterPass, database) where
 
-import Control.Lens (makeLenses, set, (^.))
+import Lens.Micro (set, (^.))
+import Lens.Micro.TH (makeLenses)
 import System.Random (RandomGen (next, split), StdGen)
 
 import Password
diff --git a/app/UI.hs b/app/UI.hs
--- a/app/UI.hs
+++ b/app/UI.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
@@ -24,10 +24,11 @@
 
 module UI (getMasterPass, mainMenu) where
 
-import Control.Lens (over, set, view, (^.))
 import Control.Monad (when)
 import Control.Monad.Trans.Class (lift)
 import qualified Control.Monad.Trans.State as S
+import Lens.Micro (over, set, (^.))
+import Lens.Micro.Extras (view)
 import System.Console.HCL
   ( Request
   , prompt
diff --git a/app/Util.hs b/app/Util.hs
--- a/app/Util.hs
+++ b/app/Util.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
@@ -33,12 +33,13 @@
   , save
   ) where
 
-import Control.Lens (over, view)
 import Control.Monad (join)
 import Control.Monad.Trans.Class (lift)
 import qualified Control.Monad.Trans.State as S
 import Data.Aeson (decodeFileStrict, encodeFile)
 import Data.Maybe (fromJust, fromMaybe)
+import Lens.Micro (over)
+import Lens.Micro.Extras (view)
 import System.Console.HCL
   ( Request
   , prompt
diff --git a/passman.cabal b/passman.cabal
--- a/passman.cabal
+++ b/passman.cabal
@@ -4,18 +4,18 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 51d5ea38547ab5dc4561e0faea0947ff40e4942817ad364ff3f645b1494095ff
+-- hash: 9adefda446bdb10b8f9ca15a23d691e680cf05e1ab8288cab62637fcc03fa385
 
 name:           passman
-version:        0.2.1
+version:        0.3.0
 synopsis:       a simple password manager
 description:    Please see the README on GitHub at <https://github.com/jlamothe/passman#readme>
 category:       Security
 homepage:       https://github.com/jlamothe/passman#readme
 bug-reports:    https://github.com/jlamothe/passman/issues
 author:         Jonathan Lamothe
-maintainer:     jlamothe1980@gmail.com
-copyright:      (C) 2018, 2019 Jonathan Lamothe
+maintainer:     jonathan@jlamothe.net
+copyright:      (C) 2018-2021 Jonathan Lamothe
 license:        LGPL-3
 license-file:   LICENSE
 build-type:     Simple
@@ -43,7 +43,8 @@
     , base64-bytestring
     , bytestring
     , containers
-    , lens
+    , microlens >=0.4.11.2 && <0.5
+    , microlens-th >=0.4.3.6 && <0.5
     , random
     , text
   default-language: Haskell2010
@@ -59,13 +60,14 @@
       app
   ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
   build-depends:
-      HCL >=1.7.1 && <2
+      HCL >=1.8 && <1.9
     , aeson
     , base >=4.7 && <5
     , bytestring
     , containers
     , easy-file >=0.2.2 && <0.3
-    , lens
+    , microlens >=0.4.11.2 && <0.5
+    , microlens-th >=0.4.3.6 && <0.5
     , passman
     , random
     , transformers
@@ -99,7 +101,8 @@
     , base >=4.7 && <5
     , bytestring
     , containers
-    , lens
+    , microlens >=0.4.11.2 && <0.5
+    , microlens-th >=0.4.3.6 && <0.5
     , passman
     , random
   default-language: Haskell2010
diff --git a/src/Password.hs b/src/Password.hs
--- a/src/Password.hs
+++ b/src/Password.hs
@@ -2,9 +2,9 @@
 
 Module:      Password
 Description: a simple password manager
-Copyright:   (C) 2018, 2019 Jonathan Lamothe
+Copyright:   (C) 2018-2021 Jonathan Lamothe
 License:     LGPLv3 (or later)
-Maintainer:  jlamothe1980@gmail.com
+Maintainer:  jonathan@jlamothe.net
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
@@ -47,7 +47,6 @@
   pwHasService, pwSetService, pwGetService, pwRemoveService, pwSearch
   ) where
 
-import Control.Lens (makeLenses, over, set, to, (^.))
 import Data.Aeson
   ( FromJSON (parseJSON)
   , ToJSON (toJSON)
@@ -67,6 +66,8 @@
 import qualified Data.Map as M
 import Data.Maybe (fromMaybe)
 import qualified Data.Text as T
+import Lens.Micro (over, set, to, (^.))
+import Lens.Micro.TH (makeLenses)
 import System.Random (RandomGen, randoms, split)
 
 -- | a mapping of service names to password data
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
diff --git a/test/Spec/JSON.hs b/test/Spec/JSON.hs
--- a/test/Spec/JSON.hs
+++ b/test/Spec/JSON.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
diff --git a/test/Spec/NewPWData.hs b/test/Spec/NewPWData.hs
--- a/test/Spec/NewPWData.hs
+++ b/test/Spec/NewPWData.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
@@ -22,7 +22,7 @@
 
 module Spec.NewPWData (tests) where
 
-import Control.Lens ((^.))
+import Lens.Micro ((^.))
 import System.Random (mkStdGen, StdGen)
 import Test.HUnit (Test  (..), (~?=))
 
diff --git a/test/Spec/NewPWDatabase.hs b/test/Spec/NewPWDatabase.hs
--- a/test/Spec/NewPWDatabase.hs
+++ b/test/Spec/NewPWDatabase.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
diff --git a/test/Spec/NewPWPolicy.hs b/test/Spec/NewPWPolicy.hs
--- a/test/Spec/NewPWPolicy.hs
+++ b/test/Spec/NewPWPolicy.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
@@ -22,7 +22,7 @@
 
 module Spec.NewPWPolicy (tests) where
 
-import Control.Lens ((^.))
+import Lens.Micro ((^.))
 import Test.HUnit (Test(..), (~?=))
 
 import Password
diff --git a/test/Spec/NewPWSalt.hs b/test/Spec/NewPWSalt.hs
--- a/test/Spec/NewPWSalt.hs
+++ b/test/Spec/NewPWSalt.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
diff --git a/test/Spec/PWGenerate.hs b/test/Spec/PWGenerate.hs
--- a/test/Spec/PWGenerate.hs
+++ b/test/Spec/PWGenerate.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
@@ -22,8 +22,8 @@
 
 module Spec.PWGenerate (tests) where
 
-import Control.Lens (set, (^.))
 import Data.Maybe (fromJust)
+import Lens.Micro (set, (^.))
 import System.Random (mkStdGen, StdGen)
 import Test.HUnit
   (Test (..)
diff --git a/test/Spec/PWGetService.hs b/test/Spec/PWGetService.hs
--- a/test/Spec/PWGetService.hs
+++ b/test/Spec/PWGetService.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
diff --git a/test/Spec/PWHasService.hs b/test/Spec/PWHasService.hs
--- a/test/Spec/PWHasService.hs
+++ b/test/Spec/PWHasService.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
diff --git a/test/Spec/PWRemoveService.hs b/test/Spec/PWRemoveService.hs
--- a/test/Spec/PWRemoveService.hs
+++ b/test/Spec/PWRemoveService.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
diff --git a/test/Spec/PWSearch.hs b/test/Spec/PWSearch.hs
--- a/test/Spec/PWSearch.hs
+++ b/test/Spec/PWSearch.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
diff --git a/test/Spec/PWSetService.hs b/test/Spec/PWSetService.hs
--- a/test/Spec/PWSetService.hs
+++ b/test/Spec/PWSetService.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
diff --git a/test/Spec/ValidatePWData.hs b/test/Spec/ValidatePWData.hs
--- a/test/Spec/ValidatePWData.hs
+++ b/test/Spec/ValidatePWData.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
@@ -22,8 +22,8 @@
 
 module Spec.ValidatePWData (tests) where
 
-import Control.Lens (set)
 import qualified Data.ByteString.Lazy as B
+import Lens.Micro (set)
 import System.Random (mkStdGen, StdGen)
 import Test.HUnit (Test (..), (~?=))
 
diff --git a/test/Spec/ValidatePWDatabase.hs b/test/Spec/ValidatePWDatabase.hs
--- a/test/Spec/ValidatePWDatabase.hs
+++ b/test/Spec/ValidatePWDatabase.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
@@ -22,8 +22,8 @@
 
 module Spec.ValidatePWDatabase (tests) where
 
-import Control.Lens (set)
 import qualified Data.Map as M
+import Lens.Micro (set)
 import System.Random (mkStdGen, StdGen)
 import Test.HUnit (Test (..), (~?=))
 
diff --git a/test/Spec/ValidatePWPolicy.hs b/test/Spec/ValidatePWPolicy.hs
--- a/test/Spec/ValidatePWPolicy.hs
+++ b/test/Spec/ValidatePWPolicy.hs
@@ -1,8 +1,8 @@
 {-
 
 passman
-Copyright (C) 2018, 2019 Jonathan Lamothe
-<jlamothe1980@gmail.com>
+Copyright (C) 2018-2021 Jonathan Lamothe
+<jonathan@jlamothe.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
@@ -22,7 +22,7 @@
 
 module Spec.ValidatePWPolicy (tests) where
 
-import Control.Lens (set)
+import Lens.Micro (set)
 import Test.HUnit (Test(..), (~?=))
 
 import Password
