diff --git a/Generator/Models.hs b/Generator/Models.hs
--- a/Generator/Models.hs
+++ b/Generator/Models.hs
@@ -29,8 +29,13 @@
 enum e = T.unpack $(codegenFile "codegen/enum.cg")
     where fromPathPieces = concatMap fromPathPiece (enumValues e) 
           toPathPieces = concatMap toPathPiece (enumValues e)
+          parseJSONs = concatMap parseJSON (enumValues e)
+          toJSONs = concatMap toJSON (enumValues e)
           fromPathPiece v = T.unpack $(codegenFile "codegen/enum-frompathpiece.cg")
           toPathPiece v = T.unpack $(codegenFile "codegen/enum-topathpiece.cg")
+          parseJSON v = T.unpack $(codegenFile "codegen/enum-parsejson.cg")
+          toJSON v = T.unpack $(codegenFile "codegen/enum-tojson.cg")
+
 modelField :: Field -> String
 modelField f = T.unpack $(codegenFile "codegen/model-field.cg")
 
diff --git a/codegen/dispatch.cg b/codegen/dispatch.cg
--- a/codegen/dispatch.cg
+++ b/codegen/dispatch.cg
@@ -22,5 +22,6 @@
  
 instance (YesodAuthPersist master,
           ~{moduleName m}Validation master,
+          KeyEntity (AuthId master) ~ User,
           YesodPersistBackend master ~ SqlPersistT) => YesodSubDispatch ~{moduleName m} (HandlerT master IO) where
     yesodSubDispatch = $(mkYesodSubDispatch resources~{moduleName m})
diff --git a/codegen/enum-parsejson.cg b/codegen/enum-parsejson.cg
new file mode 100644
--- /dev/null
+++ b/codegen/enum-parsejson.cg
@@ -0,0 +1,1 @@
+        "~{v}" -> return ~{v}
diff --git a/codegen/enum-tojson.cg b/codegen/enum-tojson.cg
new file mode 100644
--- /dev/null
+++ b/codegen/enum-tojson.cg
@@ -0,0 +1,1 @@
+    toJSON ~{v} = A.String "~{v}"
diff --git a/codegen/enum.cg b/codegen/enum.cg
--- a/codegen/enum.cg
+++ b/codegen/enum.cg
@@ -1,8 +1,16 @@
 data ~{enumName e} = ~{intercalate " | " (enumValues e)} deriving (Show, Read, Eq)
 derivePersistField "~{enumName e}"
-deriveJSON id ''~{enumName e}
 
+instance A.FromJSON ~{enumName e} where
+    parseJSON = A.withText "~{enumName e}" (\v -> case v of
+~{parseJSONs}        _ -> mzero)
+
+instance A.ToJSON ~{enumName e} where
+~{toJSONs}
+
 instance PathPiece ~{enumName e} where
 ~{fromPathPieces}
     fromPathPiece _ = Nothing
 ~{toPathPieces}
+
+
diff --git a/codegen/enums-header.cg b/codegen/enums-header.cg
--- a/codegen/enums-header.cg
+++ b/codegen/enums-header.cg
@@ -1,6 +1,7 @@
 {-# LANGUAGE TemplateHaskell #-}
 module Handler.~{moduleName m}.Enums where
 import Database.Persist.TH
-import Data.Aeson.TH
+import qualified Data.Aeson as A
 import Prelude
 import Web.PathPieces
+import Control.Monad (mzero)
diff --git a/codegen/handler-header.cg b/codegen/handler-header.cg
--- a/codegen/handler-header.cg
+++ b/codegen/handler-header.cg
@@ -1,5 +1,6 @@
 ~{hsHandlerMethod ht}~{hsRouteName (routePath r)} :: forall master. (~{moduleName m}Validation master, 
     YesodAuthPersist master,
+    KeyEntity (AuthId master) ~ User,
     YesodPersistBackend master ~ SqlPersistT)
     => ~{hsRouteType (routePath r)}HandlerT ~{moduleName m} (HandlerT master IO) A.Value
 ~{hsHandlerMethod ht}~{hsRouteName (routePath r)} ~{hsRouteParams (routePath r)} = do
diff --git a/yesod-dsl.cabal b/yesod-dsl.cabal
--- a/yesod-dsl.cabal
+++ b/yesod-dsl.cabal
@@ -1,5 +1,5 @@
 name:           yesod-dsl
-version:        0.1.1.2
+version:        0.1.1.3
 license:        BSD3
 license-file:   LICENSE
 author:         Tero Laitinen 
