diff --git a/Clckwrks/Monad.hs b/Clckwrks/Monad.hs
--- a/Clckwrks/Monad.hs
+++ b/Clckwrks/Monad.hs
@@ -81,7 +81,7 @@
 import qualified Data.List           as List
 import qualified Data.Map            as Map
 import Data.Monoid                   ((<>), mappend, mconcat)
-
+import qualified Data.Serialize      as S
 import Data.Traversable              (sequenceA)
 import qualified Data.Vector         as Vector
 import Data.ByteString.Lazy          as LB (ByteString)
@@ -89,7 +89,7 @@
 import Data.Data                     (Data, Typeable)
 import Data.Map                      (Map)
 import Data.Maybe                    (fromJust)
-import Data.SafeCopy                 (SafeCopy(..), deriveSafeCopy, base)
+import Data.SafeCopy                 (SafeCopy(..), Contained, deriveSafeCopy, base, contain)
 import Data.Set                      (Set)
 import qualified Data.Set            as Set
 import Data.Sequence                 (Seq)
@@ -137,7 +137,12 @@
 type ThemeName = T.Text
 
 newtype ThemeStyleId = ThemeStyleId { unThemeStyleId :: Int }
-    deriving (Eq, Ord, Read, Show, Data, Typeable, SafeCopy)
+    deriving (Eq, Ord, Read, Show, Data, Typeable)
+
+instance SafeCopy ThemeStyleId where
+    getCopy = contain $ ThemeStyleId <$> S.get
+    putCopy (ThemeStyleId i) = contain $ S.put i
+    errorTypeName _ = "ThemeStyleId"
 
 data ThemeStyle = ThemeStyle
     { themeStyleName        :: T.Text
diff --git a/Clckwrks/Types.hs b/Clckwrks/Types.hs
--- a/Clckwrks/Types.hs
+++ b/Clckwrks/Types.hs
@@ -6,10 +6,12 @@
     , NamedLink(..)
     ) where
 
+import Control.Applicative ((<$>))
 import Data.Aeson    (ToJSON(..), (.=), object)
 import Data.Data     (Data, Typeable)
-import Data.SafeCopy (SafeCopy, base, deriveSafeCopy)
+import Data.SafeCopy (SafeCopy(..), base, deriveSafeCopy, safeGet, safePut, contain)
 import Data.Text     (Text)
+import qualified Data.Text.Encoding as T
 import Data.UUID     (UUID)
 import HSP.Google.Analytics (UACCT)
 
@@ -20,7 +22,13 @@
 
 -- | at present this is only used by the menu editor
 newtype Prefix = Prefix { prefixText :: Text }
-    deriving (Eq, Ord, Read, Show, Data, Typeable, SafeCopy)
+    deriving (Eq, Ord, Read, Show, Data, Typeable)
+
+instance SafeCopy Prefix where
+    kind = base
+    getCopy = contain $ (Prefix . T.decodeUtf8) <$> safeGet
+    putCopy = contain . safePut . T.encodeUtf8 . prefixText
+    errorTypeName _ = "Prefix"
 
 data Trust
     = Trusted   -- ^ used when the author can be trusted     (sanitization is not performed)
diff --git a/clckwrks.cabal b/clckwrks.cabal
--- a/clckwrks.cabal
+++ b/clckwrks.cabal
@@ -1,5 +1,5 @@
 Name:                clckwrks
-Version:             0.22.0
+Version:             0.22.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
@@ -74,6 +74,7 @@
      base                           < 5,
      blaze-html                   >= 0.5 && < 0.8,
      bytestring                   >= 0.9 && < 0.11,
+     cereal                       >= 0.4 && < 0.5,
      containers                   >= 0.4 && < 0.6,
      directory                    >= 1.1 && < 1.3,
      filepath                     >= 1.2 && < 1.4,
