diff --git a/Clckwrks.hs b/Clckwrks.hs
--- a/Clckwrks.hs
+++ b/Clckwrks.hs
@@ -13,8 +13,8 @@
     , module Control.Applicative
     , module Control.Monad
     , module Control.Monad.Trans
+    , module Data.UserId
     , module Happstack.Server
-    , module Happstack.Authenticate.Core
     , module Language.Javascript.JMacro
     , module Web.Routes
     , module Web.Routes.Happstack
@@ -34,7 +34,7 @@
 import Control.Applicative
 import Control.Monad
 import Control.Monad.Trans
-import Happstack.Authenticate.Core (UserId(..))
+import Data.UserId (UserId(..))
 import Happstack.Server
 import Happstack.Server.HSP.HTML
 import Language.Javascript.JMacro (JExpr(..), JMacro(..), JStat(..), JType(..), JVal(..), Ident(..), toJExpr, jmacro, jmacroE)
diff --git a/Clckwrks/Authenticate/Plugin.hs b/Clckwrks/Authenticate/Plugin.hs
--- a/Clckwrks/Authenticate/Plugin.hs
+++ b/Clckwrks/Authenticate/Plugin.hs
@@ -22,7 +22,8 @@
 import qualified Data.Text         as Text
 import qualified Data.Set          as Set
 import qualified Data.Text.Lazy as TL
-import Happstack.Authenticate.Core  (AuthenticateState, UserId, getToken, tokenUser, userId)
+import Data.UserId                  (UserId)
+import Happstack.Authenticate.Core  (AuthenticateState, getToken, tokenUser, userId)
 import Happstack.Authenticate.Route (initAuthentication)
 import Happstack.Authenticate.Password.Route (initPassword)
 import Happstack.Authenticate.OpenId.Route (initOpenId)
diff --git a/Clckwrks/Authenticate/Plugin.hs-boot b/Clckwrks/Authenticate/Plugin.hs-boot
--- a/Clckwrks/Authenticate/Plugin.hs-boot
+++ b/Clckwrks/Authenticate/Plugin.hs-boot
@@ -1,10 +1,10 @@
 {-# LANGUAGE DeriveDataTypeable, RecordWildCards, FlexibleContexts, Rank2Types, OverloadedStrings #-}
 module Clckwrks.Authenticate.Plugin where
 
-import Happstack.Authenticate.Core (UserId)
 import Clckwrks.Authenticate.URL (AuthURL)
 import Clckwrks.Monad
 import Clckwrks.URL
+import Data.UserId (UserId)
 import Happstack.Server
 import Web.Plugins.Core            (Plugin(..), addHandler, addPluginState, getConfig, getPluginRouteFn, getPluginState, initPlugin)
 
diff --git a/Clckwrks/Monad.hs b/Clckwrks/Monad.hs
--- a/Clckwrks/Monad.hs
+++ b/Clckwrks/Monad.hs
@@ -96,7 +96,7 @@
 import qualified Data.Text.Lazy.Builder as B
 import Data.Time.Clock               (UTCTime)
 import Data.Time.Format              (formatTime)
-import Happstack.Authenticate.Core   (UserId(..))
+import Data.UserId                   (UserId(..))
 import Happstack.Server              ( CookieLife(Session), Happstack, ServerMonad(..), FilterMonad(..)
                                      , WebMonad(..), Input, Request(..), Response, HasRqData(..)
                                      , ServerPart, ServerPartT, UnWebT, addCookie, expireCookie, escape
diff --git a/Clckwrks/ProfileData/API.hs b/Clckwrks/ProfileData/API.hs
--- a/Clckwrks/ProfileData/API.hs
+++ b/Clckwrks/ProfileData/API.hs
@@ -22,7 +22,7 @@
 import qualified Data.Set           as Set
 import Data.Text                    (Text)
 import qualified Data.Text.Lazy     as TL
-import Happstack.Authenticate.Core  (UserId(..))
+import Data.UserId                  (UserId(..))
 import Happstack.Server             (Happstack, askRq, escape, rqUri, rqQuery)
 import Web.Routes                   (RouteT(..))
 
diff --git a/Clckwrks/ProfileData/Acid.hs b/Clckwrks/ProfileData/Acid.hs
--- a/Clckwrks/ProfileData/Acid.hs
+++ b/Clckwrks/ProfileData/Acid.hs
@@ -28,7 +28,7 @@
 import           Data.Set          (Set)
 import Data.Text                   (Text)
 import qualified Data.Text         as Text
-import Happstack.Authenticate.Core (UserId(..))
+import Data.UserId                 (UserId(..))
 
 data ProfileDataState = ProfileDataState
     { profileData :: IxSet ProfileData
diff --git a/Clckwrks/ProfileData/EditNewProfileData.hs b/Clckwrks/ProfileData/EditNewProfileData.hs
--- a/Clckwrks/ProfileData/EditNewProfileData.hs
+++ b/Clckwrks/ProfileData/EditNewProfileData.hs
@@ -11,7 +11,7 @@
 import qualified Data.Text         as Text
 import Data.Text.Lazy              (Text)
 import Data.Maybe                  (fromMaybe)
-import Happstack.Authenticate.Core (UserId)
+import Data.UserId                 (UserId)
 import Text.Reform                 ((++>), mapView, transformEitherM)
 import Text.Reform.HSP.Text        (form, inputText, inputSubmit, labelText, fieldset, ol, li, errorList, setAttrs)
 import Text.Reform.Happstack       (reform)
diff --git a/Clckwrks/ProfileData/EditProfileData.hs b/Clckwrks/ProfileData/EditProfileData.hs
--- a/Clckwrks/ProfileData/EditProfileData.hs
+++ b/Clckwrks/ProfileData/EditProfileData.hs
@@ -9,7 +9,7 @@
 import qualified Data.Text         as Text
 import Data.Text.Lazy              (Text)
 import Data.Maybe                  (fromMaybe)
-import Happstack.Authenticate.Core (UserId)
+import Data.UserId                 (UserId)
 import Text.Reform                 ((++>), mapView, transformEitherM)
 import Text.Reform.HSP.Text        (form, inputText, inputSubmit, labelText, fieldset, ol, li, errorList, setAttrs)
 import Text.Reform.Happstack       (reform)
diff --git a/Clckwrks/ProfileData/EditProfileDataFor.hs b/Clckwrks/ProfileData/EditProfileDataFor.hs
--- a/Clckwrks/ProfileData/EditProfileDataFor.hs
+++ b/Clckwrks/ProfileData/EditProfileDataFor.hs
@@ -9,7 +9,7 @@
 import Data.Set                 as Set
 import Data.Text                (Text, pack)
 import qualified Data.Text      as Text
-import Happstack.Authenticate.Core (UserId)
+import Data.UserId              (UserId)
 import HSP.XMLGenerator
 import HSP.XML
 import Text.Reform              ((++>), transformEitherM)
diff --git a/Clckwrks/ProfileData/Types.hs b/Clckwrks/ProfileData/Types.hs
--- a/Clckwrks/ProfileData/Types.hs
+++ b/Clckwrks/ProfileData/Types.hs
@@ -7,7 +7,6 @@
      , Username(..)
      ) where
 
-import Happstack.Authenticate.Core (UserId(..))
 import Data.Data     (Data, Typeable)
 import Data.IxSet    (Indexable(..), ixSet, ixFun)
 import Data.IxSet.Ix (Ix)
@@ -16,6 +15,7 @@
 import Data.Set      (Set, empty, singleton)
 import Data.Text     (Text, empty)
 import Data.Typeable (Typeable)
+import Data.UserId   (UserId(..))
 
 data Role_001
     = Administrator_001
diff --git a/Clckwrks/ProfileData/URL.hs b/Clckwrks/ProfileData/URL.hs
--- a/Clckwrks/ProfileData/URL.hs
+++ b/Clckwrks/ProfileData/URL.hs
@@ -3,7 +3,7 @@
 
 import Data.Data                   (Data, Typeable)
 import Data.SafeCopy               (SafeCopy(..), base, deriveSafeCopy)
-import Happstack.Authenticate.Core (UserId)
+import Data.UserId                 (UserId)
 import Web.Routes.TH               (derivePathInfo)
 
 data ProfileDataURL
diff --git a/clckwrks.cabal b/clckwrks.cabal
--- a/clckwrks.cabal
+++ b/clckwrks.cabal
@@ -1,5 +1,5 @@
 Name:                clckwrks
-Version:             0.23.8
+Version:             0.23.9
 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
@@ -109,7 +109,7 @@
      hsx2hs                       >= 0.13 && < 0.14,
      ixset                        == 1.0.*,
      jmacro                       == 0.6.*,
-     lens                         >= 4.3  && < 4.12,
+     lens                         >= 4.3  && < 4.13,
      mtl                          >= 2.0  && < 2.3,
      old-locale                   ==  1.0.*,
      process                      >= 1.0  && < 1.3,
@@ -126,6 +126,7 @@
      time-locale-compat           >= 0.1  && < 0.2,
      uuid                         >= 1.2  && < 1.4,
      unordered-containers         >= 0.1  && < 0.3,
+     userid                       >= 0.1  && < 0.2,
      utf8-string                  >= 0.3  && < 1.1,
      vector                       >= 0.9,
      web-plugins                  >= 0.1  && < 0.3,
