diff --git a/amazonka-lambda.cabal b/amazonka-lambda.cabal
--- a/amazonka-lambda.cabal
+++ b/amazonka-lambda.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-lambda
-version:               0.0.0
+version:               0.0.1
 synopsis:              Amazon Lambda SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -59,5 +59,5 @@
     other-modules:
 
     build-depends:
-          amazonka-core
-        , base          >= 4.7 && < 5
+          amazonka-core == 0.0.1.*
+        , base          >= 4.7     && < 5
diff --git a/gen/Network/AWS/Lambda/GetFunctionConfiguration.hs b/gen/Network/AWS/Lambda/GetFunctionConfiguration.hs
--- a/gen/Network/AWS/Lambda/GetFunctionConfiguration.hs
+++ b/gen/Network/AWS/Lambda/GetFunctionConfiguration.hs
@@ -89,11 +89,11 @@
     , _gfcrHandler         :: Maybe Text
     , _gfcrLastModified    :: Maybe RFC822
     , _gfcrMemorySize      :: Maybe Nat
-    , _gfcrMode            :: Maybe Text
+    , _gfcrMode            :: Maybe Mode
     , _gfcrRole            :: Maybe Text
-    , _gfcrRuntime         :: Maybe Text
+    , _gfcrRuntime         :: Maybe Runtime
     , _gfcrTimeout         :: Maybe Nat
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'GetFunctionConfigurationResponse' constructor.
 --
@@ -115,11 +115,11 @@
 --
 -- * 'gfcrMemorySize' @::@ 'Maybe' 'Natural'
 --
--- * 'gfcrMode' @::@ 'Maybe' 'Text'
+-- * 'gfcrMode' @::@ 'Maybe' 'Mode'
 --
 -- * 'gfcrRole' @::@ 'Maybe' 'Text'
 --
--- * 'gfcrRuntime' @::@ 'Maybe' 'Text'
+-- * 'gfcrRuntime' @::@ 'Maybe' 'Runtime'
 --
 -- * 'gfcrTimeout' @::@ 'Maybe' 'Natural'
 --
@@ -175,7 +175,7 @@
 gfcrMemorySize = lens _gfcrMemorySize (\s a -> s { _gfcrMemorySize = a }) . mapping _Nat
 
 -- | The type of the Lambda function you uploaded.
-gfcrMode :: Lens' GetFunctionConfigurationResponse (Maybe Text)
+gfcrMode :: Lens' GetFunctionConfigurationResponse (Maybe Mode)
 gfcrMode = lens _gfcrMode (\s a -> s { _gfcrMode = a })
 
 -- | The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when
@@ -185,7 +185,7 @@
 gfcrRole = lens _gfcrRole (\s a -> s { _gfcrRole = a })
 
 -- | The runtime environment for the Lambda function.
-gfcrRuntime :: Lens' GetFunctionConfigurationResponse (Maybe Text)
+gfcrRuntime :: Lens' GetFunctionConfigurationResponse (Maybe Runtime)
 gfcrRuntime = lens _gfcrRuntime (\s a -> s { _gfcrRuntime = a })
 
 -- | The function execution time at which Lambda should terminate the
diff --git a/gen/Network/AWS/Lambda/Types.hs b/gen/Network/AWS/Lambda/Types.hs
--- a/gen/Network/AWS/Lambda/Types.hs
+++ b/gen/Network/AWS/Lambda/Types.hs
@@ -25,7 +25,7 @@
     -- * Service
       Lambda
     -- ** Error
-    , RESTError
+    , JSONError
 
     -- * Runtime
     , Runtime (..)
@@ -80,7 +80,7 @@
 
 instance AWSService Lambda where
     type Sg Lambda = V4
-    type Er Lambda = RESTError
+    type Er Lambda = JSONError
 
     service = Service
         { _svcEndpoint     = regional
@@ -91,7 +91,7 @@
         , _svcJSONVersion  = Nothing
         }
 
-    handle = restError statusSuccess
+    handle = jsonError statusSuccess
 
 data Runtime
     = Nodejs -- ^ nodejs
@@ -105,6 +105,10 @@
 instance ToText Runtime where
     toText Nodejs = "nodejs"
 
+instance ToByteString Runtime
+instance ToHeader     Runtime
+instance ToQuery      Runtime
+
 instance FromJSON Runtime where
     parseJSON = parseJSONText "Runtime"
 
@@ -123,6 +127,10 @@
 instance ToText Mode where
     toText Event = "event"
 
+instance ToByteString Mode
+instance ToHeader     Mode
+instance ToQuery      Mode
+
 instance FromJSON Mode where
     parseJSON = parseJSONText "Mode"
 
@@ -178,11 +186,11 @@
     , _fcHandler         :: Maybe Text
     , _fcLastModified    :: Maybe RFC822
     , _fcMemorySize      :: Maybe Nat
-    , _fcMode            :: Maybe Text
+    , _fcMode            :: Maybe Mode
     , _fcRole            :: Maybe Text
-    , _fcRuntime         :: Maybe Text
+    , _fcRuntime         :: Maybe Runtime
     , _fcTimeout         :: Maybe Nat
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'FunctionConfiguration' constructor.
 --
@@ -204,11 +212,11 @@
 --
 -- * 'fcMemorySize' @::@ 'Maybe' 'Natural'
 --
--- * 'fcMode' @::@ 'Maybe' 'Text'
+-- * 'fcMode' @::@ 'Maybe' 'Mode'
 --
 -- * 'fcRole' @::@ 'Maybe' 'Text'
 --
--- * 'fcRuntime' @::@ 'Maybe' 'Text'
+-- * 'fcRuntime' @::@ 'Maybe' 'Runtime'
 --
 -- * 'fcTimeout' @::@ 'Maybe' 'Natural'
 --
@@ -264,7 +272,7 @@
 fcMemorySize = lens _fcMemorySize (\s a -> s { _fcMemorySize = a }) . mapping _Nat
 
 -- | The type of the Lambda function you uploaded.
-fcMode :: Lens' FunctionConfiguration (Maybe Text)
+fcMode :: Lens' FunctionConfiguration (Maybe Mode)
 fcMode = lens _fcMode (\s a -> s { _fcMode = a })
 
 -- | The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when
@@ -274,7 +282,7 @@
 fcRole = lens _fcRole (\s a -> s { _fcRole = a })
 
 -- | The runtime environment for the Lambda function.
-fcRuntime :: Lens' FunctionConfiguration (Maybe Text)
+fcRuntime :: Lens' FunctionConfiguration (Maybe Runtime)
 fcRuntime = lens _fcRuntime (\s a -> s { _fcRuntime = a })
 
 -- | The function execution time at which Lambda should terminate the
diff --git a/gen/Network/AWS/Lambda/UpdateFunctionConfiguration.hs b/gen/Network/AWS/Lambda/UpdateFunctionConfiguration.hs
--- a/gen/Network/AWS/Lambda/UpdateFunctionConfiguration.hs
+++ b/gen/Network/AWS/Lambda/UpdateFunctionConfiguration.hs
@@ -145,11 +145,11 @@
     , _ufcrHandler         :: Maybe Text
     , _ufcrLastModified    :: Maybe RFC822
     , _ufcrMemorySize      :: Maybe Nat
-    , _ufcrMode            :: Maybe Text
+    , _ufcrMode            :: Maybe Mode
     , _ufcrRole            :: Maybe Text
-    , _ufcrRuntime         :: Maybe Text
+    , _ufcrRuntime         :: Maybe Runtime
     , _ufcrTimeout         :: Maybe Nat
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'UpdateFunctionConfigurationResponse' constructor.
 --
@@ -171,11 +171,11 @@
 --
 -- * 'ufcrMemorySize' @::@ 'Maybe' 'Natural'
 --
--- * 'ufcrMode' @::@ 'Maybe' 'Text'
+-- * 'ufcrMode' @::@ 'Maybe' 'Mode'
 --
 -- * 'ufcrRole' @::@ 'Maybe' 'Text'
 --
--- * 'ufcrRuntime' @::@ 'Maybe' 'Text'
+-- * 'ufcrRuntime' @::@ 'Maybe' 'Runtime'
 --
 -- * 'ufcrTimeout' @::@ 'Maybe' 'Natural'
 --
@@ -231,7 +231,7 @@
 ufcrMemorySize = lens _ufcrMemorySize (\s a -> s { _ufcrMemorySize = a }) . mapping _Nat
 
 -- | The type of the Lambda function you uploaded.
-ufcrMode :: Lens' UpdateFunctionConfigurationResponse (Maybe Text)
+ufcrMode :: Lens' UpdateFunctionConfigurationResponse (Maybe Mode)
 ufcrMode = lens _ufcrMode (\s a -> s { _ufcrMode = a })
 
 -- | The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when
@@ -241,7 +241,7 @@
 ufcrRole = lens _ufcrRole (\s a -> s { _ufcrRole = a })
 
 -- | The runtime environment for the Lambda function.
-ufcrRuntime :: Lens' UpdateFunctionConfigurationResponse (Maybe Text)
+ufcrRuntime :: Lens' UpdateFunctionConfigurationResponse (Maybe Runtime)
 ufcrRuntime = lens _ufcrRuntime (\s a -> s { _ufcrRuntime = a })
 
 -- | The function execution time at which Lambda should terminate the
diff --git a/gen/Network/AWS/Lambda/UploadFunction.hs b/gen/Network/AWS/Lambda/UploadFunction.hs
--- a/gen/Network/AWS/Lambda/UploadFunction.hs
+++ b/gen/Network/AWS/Lambda/UploadFunction.hs
@@ -75,9 +75,9 @@
     , _ufFunctionZip  :: Base64
     , _ufHandler      :: Text
     , _ufMemorySize   :: Maybe Nat
-    , _ufMode         :: Text
+    , _ufMode         :: Mode
     , _ufRole         :: Text
-    , _ufRuntime      :: Text
+    , _ufRuntime      :: Runtime
     , _ufTimeout      :: Maybe Nat
     } deriving (Eq, Show)
 
@@ -95,20 +95,20 @@
 --
 -- * 'ufMemorySize' @::@ 'Maybe' 'Natural'
 --
--- * 'ufMode' @::@ 'Text'
+-- * 'ufMode' @::@ 'Mode'
 --
 -- * 'ufRole' @::@ 'Text'
 --
--- * 'ufRuntime' @::@ 'Text'
+-- * 'ufRuntime' @::@ 'Runtime'
 --
 -- * 'ufTimeout' @::@ 'Maybe' 'Natural'
 --
 uploadFunction :: Text -- ^ 'ufFunctionName'
                -> Base64 -- ^ 'ufFunctionZip'
-               -> Text -- ^ 'ufRuntime'
+               -> Runtime -- ^ 'ufRuntime'
                -> Text -- ^ 'ufRole'
                -> Text -- ^ 'ufHandler'
-               -> Text -- ^ 'ufMode'
+               -> Mode -- ^ 'ufMode'
                -> UploadFunction
 uploadFunction p1 p2 p3 p4 p5 p6 = UploadFunction
     { _ufFunctionName = p1
@@ -156,7 +156,7 @@
 
 -- | How the Lambda function will be invoked. Lambda supports only the "event"
 -- mode.
-ufMode :: Lens' UploadFunction Text
+ufMode :: Lens' UploadFunction Mode
 ufMode = lens _ufMode (\s a -> s { _ufMode = a })
 
 -- | The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when
@@ -167,7 +167,7 @@
 
 -- | The runtime environment for the Lambda function you are uploading.
 -- Currently, Lambda supports only "nodejs" as the runtime.
-ufRuntime :: Lens' UploadFunction Text
+ufRuntime :: Lens' UploadFunction Runtime
 ufRuntime = lens _ufRuntime (\s a -> s { _ufRuntime = a })
 
 -- | The function execution time at which Lambda should terminate the
@@ -186,11 +186,11 @@
     , _ufrHandler         :: Maybe Text
     , _ufrLastModified    :: Maybe RFC822
     , _ufrMemorySize      :: Maybe Nat
-    , _ufrMode            :: Maybe Text
+    , _ufrMode            :: Maybe Mode
     , _ufrRole            :: Maybe Text
-    , _ufrRuntime         :: Maybe Text
+    , _ufrRuntime         :: Maybe Runtime
     , _ufrTimeout         :: Maybe Nat
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'UploadFunctionResponse' constructor.
 --
@@ -212,11 +212,11 @@
 --
 -- * 'ufrMemorySize' @::@ 'Maybe' 'Natural'
 --
--- * 'ufrMode' @::@ 'Maybe' 'Text'
+-- * 'ufrMode' @::@ 'Maybe' 'Mode'
 --
 -- * 'ufrRole' @::@ 'Maybe' 'Text'
 --
--- * 'ufrRuntime' @::@ 'Maybe' 'Text'
+-- * 'ufrRuntime' @::@ 'Maybe' 'Runtime'
 --
 -- * 'ufrTimeout' @::@ 'Maybe' 'Natural'
 --
@@ -272,7 +272,7 @@
 ufrMemorySize = lens _ufrMemorySize (\s a -> s { _ufrMemorySize = a }) . mapping _Nat
 
 -- | The type of the Lambda function you uploaded.
-ufrMode :: Lens' UploadFunctionResponse (Maybe Text)
+ufrMode :: Lens' UploadFunctionResponse (Maybe Mode)
 ufrMode = lens _ufrMode (\s a -> s { _ufrMode = a })
 
 -- | The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when
@@ -282,7 +282,7 @@
 ufrRole = lens _ufrRole (\s a -> s { _ufrRole = a })
 
 -- | The runtime environment for the Lambda function.
-ufrRuntime :: Lens' UploadFunctionResponse (Maybe Text)
+ufrRuntime :: Lens' UploadFunctionResponse (Maybe Runtime)
 ufrRuntime = lens _ufrRuntime (\s a -> s { _ufrRuntime = a })
 
 -- | The function execution time at which Lambda should terminate the
