diff --git a/Clckwrks/Acid.hs b/Clckwrks/Acid.hs
--- a/Clckwrks/Acid.hs
+++ b/Clckwrks/Acid.hs
@@ -56,13 +56,15 @@
 
     }
     deriving (Eq, Data, Typeable, Show)
-$(deriveSafeCopy 1 'extension ''CoreState_1)
 
 instance Migrate CoreState_1 where
     type MigrateFrom CoreState_1 = CoreState_v0
     migrate (CoreState_v0 ua rr) = CoreState_1 Nothing ua rr Nothing
 
+$(deriveSafeCopy 1 'extension ''CoreState_1)
 
+
+
 -- | 'CoreState' holds some values that are required by the core
 -- itself, or which are useful enough to be shared with numerous
 -- plugins/themes.
@@ -120,13 +122,15 @@
     , _coreBodyPolicy     :: (FilePath, Int64, Int64, Int64) -- ^ (temp directory for uploads, maxDisk, maxRAM, maxHeader)
     }
     deriving (Eq, Data, Typeable, Show)
-$(deriveSafeCopy 4 'extension ''CoreState)
 
-makeLenses ''CoreState
-
 instance Migrate CoreState where
     type MigrateFrom CoreState = CoreState_3
     migrate (CoreState_3 sn ua rr lr fa rta smp eo bp) = CoreState sn ua rr lr (Text.pack "/") fa rta smp eo bp
+
+$(deriveSafeCopy 4 'extension ''CoreState)
+
+makeLenses ''CoreState
+
 
 initialCoreState :: CoreState
 initialCoreState = CoreState
diff --git a/Clckwrks/Monad.hs b/Clckwrks/Monad.hs
--- a/Clckwrks/Monad.hs
+++ b/Clckwrks/Monad.hs
@@ -696,8 +696,8 @@
                 Plugins theme n hook config ClckPluginsSt
              -> (forall mm. (Functor mm, MonadIO mm, Happstack mm) => ClckT url m [TL.Text -> ClckT ClckURL mm TL.Text])
 getPreProcessors plugins =
-    mapClckT liftIO $
-      (cpsPreProcessors <$> getPluginsSt plugins)
+  do st <- liftIO $ getPluginsSt plugins
+     pure (cpsPreProcessors st)
 
 -- | create a google analytics tracking code block
 --
diff --git a/Clckwrks/NavBar/Types.hs b/Clckwrks/NavBar/Types.hs
--- a/Clckwrks/NavBar/Types.hs
+++ b/Clckwrks/NavBar/Types.hs
@@ -1,25 +1,31 @@
-{-# LANGUAGE DeriveDataTypeable, OverloadedStrings, RecordWildCards, TemplateHaskell #-}
+{-# LANGUAGE CPP, DeriveGeneric, DeriveDataTypeable, OverloadedStrings, RecordWildCards, TemplateHaskell, FlexibleContexts, UndecidableInstances #-}
 module Clckwrks.NavBar.Types where
 
 import Clckwrks.Types (NamedLink(..))
 import Data.Aeson     (ToJSON(..), (.=), object)
 import Data.Data      (Data, Typeable)
-import Data.SafeCopy  (base, deriveSafeCopy)
+import Data.SafeCopy  (SafeCopy(..), base, contain, deriveSafeCopy, getSafePut, getSafeGet)
+import Data.Serialize (label, putWord8, getWord8)
 import Data.Text      (Text)
+import GHC.Generics   (Generic)
 
 newtype NavBar = NavBar
     { navBarItems :: [NavBarItem]
     }
-    deriving (Eq, Read, Show, Data, Typeable)
-
-
+    deriving (Eq, Read, Show, Data, Typeable, Generic)
 
 data NavBarItem
     = NBLink    NamedLink
     | NBSubNavBar Text NavBar
-    deriving (Eq, Read, Show, Data, Typeable)
+    deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+#if __GLASGOW_HASKELL >= __900__
+instance SafeCopy NavBar where version = 1
+instance SafeCopy NavBarItem where version = 1
+#else
 $(deriveSafeCopy 1 'base ''NavBar)
 $(deriveSafeCopy 1 'base ''NavBarItem)
+#endif
 
 newtype NavBarLinks = NavBarLinks [(String, [NamedLink])]
     deriving (Eq, Read, Show, Data, Typeable)
@@ -30,4 +36,3 @@
                           object [ "pluginName" .= plugName
                                  , "pluginLinks" .= map toJSON links
                                  ]) navBarLinks
-
diff --git a/Clckwrks/ProfileData/EditProfileDataFor.hs b/Clckwrks/ProfileData/EditProfileDataFor.hs
--- a/Clckwrks/ProfileData/EditProfileDataFor.hs
+++ b/Clckwrks/ProfileData/EditProfileDataFor.hs
@@ -8,6 +8,7 @@
 import Clckwrks.Authenticate.URL (AuthURL(ResetPassword))
 import Control.Monad.State       (get)
 import Data.Maybe                (fromMaybe)
+import Data.Monoid               ((<>))
 import Data.Set                  as Set
 import Data.Text.Lazy            (Text)
 import qualified Data.Text.Lazy  as LT
@@ -69,7 +70,7 @@
                  Nothing  -> calcBaseURI cc
                  (Just b) -> b
 
-               resetLink = authShowURL ResetPassword [] <> "/#"
+               resetLink = (authShowURL ResetPassword []) <> "/#"
            eResetTokenLink <- liftIO $ resetTokenForUserId resetLink (acidStateAuthenticate aps) (acidStatePassword aps) uid
            case eResetTokenLink of
              (Left e) -> template "Reset Password Link" () $
diff --git a/clckwrks.cabal b/clckwrks.cabal
--- a/clckwrks.cabal
+++ b/clckwrks.cabal
@@ -1,5 +1,5 @@
 Name:                clckwrks
-Version:             0.28.0
+Version:             0.28.0.1
 Synopsis:            A secure, reliable content management system (CMS) and blogging platform
 Description:         clckwrks (pronounced, clockworks) aims to compete
                      directly with popular PHP-based blogging and CMS
@@ -21,7 +21,7 @@
 Category:            Clckwrks
 Build-type:          Simple
 Cabal-version:       1.18
-tested-with:         GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1, GHC == 8.6.3, GHC == 8.8.3, GHC == 8.10.2
+tested-with:         GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.5, GHC==8.8.4, GHC==8.10.7, GHC==9.0.2, GHC==9.2.2
 Data-Files:
            static/admin.css
 
@@ -97,9 +97,9 @@
 
   Build-depends:
      acid-state                   >= 0.12 && < 0.17,
-     aeson                        (>= 0.4  && < 0.10) || (>= 0.11 && < 1.6),
+     aeson                        (>= 0.4  && < 0.10) || (>= 0.11 && < 1.6) || (>= 2 && <= 2.1),
      aeson-qq                     >= 0.7  && < 0.9,
-     attoparsec                   >= 0.10 && < 0.14,
+     attoparsec                   >= 0.10 && < 0.15,
      base                                    < 5,
      blaze-html                   >= 0.5  && < 0.10,
      bytestring                   >= 0.9  && < 0.12,
@@ -118,7 +118,7 @@
      http-types                              < 0.13,
      ixset                        >= 1.0 && < 1.2,
      jmacro                       == 0.6.*,
-     lens                         >= 4.3  && < 4.20,
+     lens                         >= 4.3  && < 5.2,
      mtl                          >= 2.0  && < 2.3,
      old-locale                   ==  1.0.*,
      process                      >= 1.0  && < 1.7,
@@ -127,10 +127,10 @@
      reform                       >= 0.2 && < 0.4,
      reform-happstack             == 0.2.*,
      reform-hsp                   >= 0.2  && < 0.3,
-     safecopy                     >= 0.6,
+     safecopy                     >= 0.10,
      stm                          >= 2.2  && < 2.6,
-     text                         >= 0.11 && < 1.3,
-     time                         >= 1.2  && < 1.12,
+     text                         >= 0.11 && < 2.1,
+     time                         >= 1.2  && < 1.14,
      time-locale-compat           >= 0.1  && < 0.2,
      uuid-orphans                 >= 1.2  && < 1.5,
      uuid-types                   >= 1.0  && < 1.1,
