diff --git a/amazonka-s3.cabal b/amazonka-s3.cabal
--- a/amazonka-s3.cabal
+++ b/amazonka-s3.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-s3
-version:               0.0.3
+version:               0.0.4
 synopsis:              Amazon Simple Storage Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -94,5 +94,5 @@
           Network.AWS.S3.Internal
 
     build-depends:
-          amazonka-core == 0.0.3.*
+          amazonka-core == 0.0.4.*
         , base          >= 4.7     && < 5
diff --git a/gen/Network/AWS/S3/CompleteMultipartUpload.hs b/gen/Network/AWS/S3/CompleteMultipartUpload.hs
--- a/gen/Network/AWS/S3/CompleteMultipartUpload.hs
+++ b/gen/Network/AWS/S3/CompleteMultipartUpload.hs
@@ -101,7 +101,7 @@
 data CompleteMultipartUploadResponse = CompleteMultipartUploadResponse
     { _cmur1Bucket               :: Maybe Text
     , _cmur1ETag                 :: Maybe Text
-    , _cmur1Expiration           :: Maybe ISO8601
+    , _cmur1Expiration           :: Maybe RFC822
     , _cmur1Key                  :: Maybe Text
     , _cmur1Location             :: Maybe Text
     , _cmur1SSEKMSKeyId          :: Maybe (Sensitive Text)
diff --git a/gen/Network/AWS/S3/CopyObject.hs b/gen/Network/AWS/S3/CopyObject.hs
--- a/gen/Network/AWS/S3/CopyObject.hs
+++ b/gen/Network/AWS/S3/CopyObject.hs
@@ -90,14 +90,14 @@
     , _coContentType                    :: Maybe Text
     , _coCopySource                     :: Text
     , _coCopySourceIfMatch              :: Maybe Text
-    , _coCopySourceIfModifiedSince      :: Maybe ISO8601
+    , _coCopySourceIfModifiedSince      :: Maybe RFC822
     , _coCopySourceIfNoneMatch          :: Maybe Text
-    , _coCopySourceIfUnmodifiedSince    :: Maybe ISO8601
+    , _coCopySourceIfUnmodifiedSince    :: Maybe RFC822
     , _coCopySourceSSECustomerAlgorithm :: Maybe Text
     , _coCopySourceSSECustomerKey       :: Maybe (Sensitive Text)
     , _coCopySourceSSECustomerKeyMD5    :: Maybe Text
     , _coCopySourceSSEKMSKeyId          :: Maybe (Sensitive Text)
-    , _coExpires                        :: Maybe ISO8601
+    , _coExpires                        :: Maybe RFC822
     , _coGrantFullControl               :: Maybe Text
     , _coGrantRead                      :: Maybe Text
     , _coGrantReadACP                   :: Maybe Text
@@ -382,7 +382,7 @@
 data CopyObjectResponse = CopyObjectResponse
     { _corCopyObjectResult     :: Maybe CopyObjectResult
     , _corCopySourceVersionId  :: Maybe Text
-    , _corExpiration           :: Maybe ISO8601
+    , _corExpiration           :: Maybe RFC822
     , _corSSECustomerAlgorithm :: Maybe Text
     , _corSSECustomerKeyMD5    :: Maybe Text
     , _corSSEKMSKeyId          :: Maybe (Sensitive Text)
diff --git a/gen/Network/AWS/S3/CreateMultipartUpload.hs b/gen/Network/AWS/S3/CreateMultipartUpload.hs
--- a/gen/Network/AWS/S3/CreateMultipartUpload.hs
+++ b/gen/Network/AWS/S3/CreateMultipartUpload.hs
@@ -85,7 +85,7 @@
     , _cmuContentEncoding         :: Maybe Text
     , _cmuContentLanguage         :: Maybe Text
     , _cmuContentType             :: Maybe Text
-    , _cmuExpires                 :: Maybe ISO8601
+    , _cmuExpires                 :: Maybe RFC822
     , _cmuGrantFullControl        :: Maybe Text
     , _cmuGrantRead               :: Maybe Text
     , _cmuGrantReadACP            :: Maybe Text
diff --git a/gen/Network/AWS/S3/GetObject.hs b/gen/Network/AWS/S3/GetObject.hs
--- a/gen/Network/AWS/S3/GetObject.hs
+++ b/gen/Network/AWS/S3/GetObject.hs
@@ -86,9 +86,9 @@
 data GetObject = GetObject
     { _goBucket                     :: Text
     , _goIfMatch                    :: Maybe Text
-    , _goIfModifiedSince            :: Maybe ISO8601
+    , _goIfModifiedSince            :: Maybe RFC822
     , _goIfNoneMatch                :: Maybe Text
-    , _goIfUnmodifiedSince          :: Maybe ISO8601
+    , _goIfUnmodifiedSince          :: Maybe RFC822
     , _goKey                        :: Text
     , _goRange                      :: Maybe Text
     , _goResponseCacheControl       :: Maybe Text
@@ -96,7 +96,7 @@
     , _goResponseContentEncoding    :: Maybe Text
     , _goResponseContentLanguage    :: Maybe Text
     , _goResponseContentType        :: Maybe Text
-    , _goResponseExpires            :: Maybe ISO8601
+    , _goResponseExpires            :: Maybe RFC822
     , _goSSECustomerAlgorithm       :: Maybe Text
     , _goSSECustomerKey             :: Maybe (Sensitive Text)
     , _goSSECustomerKeyMD5          :: Maybe Text
@@ -278,9 +278,9 @@
     , _gorContentType             :: Maybe Text
     , _gorDeleteMarker            :: Maybe Bool
     , _gorETag                    :: Maybe Text
-    , _gorExpiration              :: Maybe ISO8601
-    , _gorExpires                 :: Maybe ISO8601
-    , _gorLastModified            :: Maybe ISO8601
+    , _gorExpiration              :: Maybe RFC822
+    , _gorExpires                 :: Maybe RFC822
+    , _gorLastModified            :: Maybe RFC822
     , _gorMetadata                :: Map (CI Text) Text
     , _gorMissingMeta             :: Maybe Int
     , _gorRestore                 :: Maybe Text
diff --git a/gen/Network/AWS/S3/HeadObject.hs b/gen/Network/AWS/S3/HeadObject.hs
--- a/gen/Network/AWS/S3/HeadObject.hs
+++ b/gen/Network/AWS/S3/HeadObject.hs
@@ -81,9 +81,9 @@
 data HeadObject = HeadObject
     { _hoBucket               :: Text
     , _hoIfMatch              :: Maybe Text
-    , _hoIfModifiedSince      :: Maybe ISO8601
+    , _hoIfModifiedSince      :: Maybe RFC822
     , _hoIfNoneMatch          :: Maybe Text
-    , _hoIfUnmodifiedSince    :: Maybe ISO8601
+    , _hoIfUnmodifiedSince    :: Maybe RFC822
     , _hoKey                  :: Text
     , _hoRange                :: Maybe Text
     , _hoSSECustomerAlgorithm :: Maybe Text
@@ -214,9 +214,9 @@
     , _horContentType             :: Maybe Text
     , _horDeleteMarker            :: Maybe Bool
     , _horETag                    :: Maybe Text
-    , _horExpiration              :: Maybe ISO8601
-    , _horExpires                 :: Maybe ISO8601
-    , _horLastModified            :: Maybe ISO8601
+    , _horExpiration              :: Maybe RFC822
+    , _horExpires                 :: Maybe RFC822
+    , _horLastModified            :: Maybe RFC822
     , _horMetadata                :: Map (CI Text) Text
     , _horMissingMeta             :: Maybe Int
     , _horRestore                 :: Maybe Text
diff --git a/gen/Network/AWS/S3/PutObject.hs b/gen/Network/AWS/S3/PutObject.hs
--- a/gen/Network/AWS/S3/PutObject.hs
+++ b/gen/Network/AWS/S3/PutObject.hs
@@ -85,7 +85,7 @@
     , _poContentLength           :: Maybe Int
     , _poContentMD5              :: Maybe Text
     , _poContentType             :: Maybe Text
-    , _poExpires                 :: Maybe ISO8601
+    , _poExpires                 :: Maybe RFC822
     , _poGrantFullControl        :: Maybe Text
     , _poGrantRead               :: Maybe Text
     , _poGrantReadACP            :: Maybe Text
@@ -301,7 +301,7 @@
 
 data PutObjectResponse = PutObjectResponse
     { _porETag                 :: Maybe Text
-    , _porExpiration           :: Maybe ISO8601
+    , _porExpiration           :: Maybe RFC822
     , _porSSECustomerAlgorithm :: Maybe Text
     , _porSSECustomerKeyMD5    :: Maybe Text
     , _porSSEKMSKeyId          :: Maybe (Sensitive Text)
diff --git a/gen/Network/AWS/S3/Types.hs b/gen/Network/AWS/S3/Types.hs
--- a/gen/Network/AWS/S3/Types.hs
+++ b/gen/Network/AWS/S3/Types.hs
@@ -429,8 +429,7 @@
     type Er S3 = RESTError
 
     service = Service
-        { _svcEndpoint     = global
-        , _svcAbbrev       = "S3"
+        { _svcAbbrev       = "S3"
         , _svcPrefix       = "s3"
         , _svcVersion      = "2006-03-01"
         , _svcTargetPrefix = Nothing
@@ -566,7 +565,7 @@
 data DeleteMarkerEntry = DeleteMarkerEntry
     { _dmeIsLatest     :: Maybe Bool
     , _dmeKey          :: Maybe Text
-    , _dmeLastModified :: Maybe ISO8601
+    , _dmeLastModified :: Maybe RFC822
     , _dmeOwner        :: Maybe Owner
     , _dmeVersionId    :: Maybe Text
     } deriving (Eq, Show)
@@ -662,7 +661,7 @@
 
 data Part = Part
     { _pETag         :: Maybe Text
-    , _pLastModified :: Maybe ISO8601
+    , _pLastModified :: Maybe RFC822
     , _pPartNumber   :: Maybe Int
     , _pSize         :: Maybe Int
     } deriving (Eq, Ord, Show)
@@ -1200,7 +1199,7 @@
 
 data CopyPartResult = CopyPartResult
     { _cprETag         :: Maybe Text
-    , _cprLastModified :: Maybe ISO8601
+    , _cprLastModified :: Maybe RFC822
     } deriving (Eq, Ord, Show)
 
 -- | 'CopyPartResult' constructor.
@@ -1549,36 +1548,38 @@
         ]
 
 data Bucket = Bucket
-    { _bCreationDate :: Maybe ISO8601
-    , _bName         :: Maybe Text
+    { _bCreationDate :: RFC822
+    , _bName         :: Text
     } deriving (Eq, Ord, Show)
 
 -- | 'Bucket' constructor.
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'bCreationDate' @::@ 'Maybe' 'UTCTime'
+-- * 'bCreationDate' @::@ 'UTCTime'
 --
--- * 'bName' @::@ 'Maybe' 'Text'
+-- * 'bName' @::@ 'Text'
 --
-bucket :: Bucket
-bucket = Bucket
-    { _bName         = Nothing
-    , _bCreationDate = Nothing
+bucket :: Text -- ^ 'bName'
+       -> UTCTime -- ^ 'bCreationDate'
+       -> Bucket
+bucket p1 p2 = Bucket
+    { _bName         = p1
+    , _bCreationDate = withIso _Time (const id) p2
     }
 
 -- | Date the bucket was created.
-bCreationDate :: Lens' Bucket (Maybe UTCTime)
-bCreationDate = lens _bCreationDate (\s a -> s { _bCreationDate = a }) . mapping _Time
+bCreationDate :: Lens' Bucket UTCTime
+bCreationDate = lens _bCreationDate (\s a -> s { _bCreationDate = a }) . _Time
 
 -- | The name of the bucket.
-bName :: Lens' Bucket (Maybe Text)
+bName :: Lens' Bucket Text
 bName = lens _bName (\s a -> s { _bName = a })
 
 instance FromXML Bucket where
     parseXML x = Bucket
-        <$> x .@? "CreationDate"
-        <*> x .@? "Name"
+        <$> x .@  "CreationDate"
+        <*> x .@  "Name"
 
 instance ToXML Bucket where
     toXML Bucket{..} = nodes "Bucket"
@@ -1985,7 +1986,7 @@
     { _ovETag         :: Maybe Text
     , _ovIsLatest     :: Maybe Bool
     , _ovKey          :: Maybe Text
-    , _ovLastModified :: Maybe ISO8601
+    , _ovLastModified :: Maybe RFC822
     , _ovOwner        :: Maybe Owner
     , _ovSize         :: Maybe Int
     , _ovStorageClass :: Maybe ObjectVersionStorageClass
@@ -2454,7 +2455,7 @@
 data Object = Object
     { _oETag         :: Text
     , _oKey          :: Text
-    , _oLastModified :: ISO8601
+    , _oLastModified :: RFC822
     , _oOwner        :: Owner
     , _oSize         :: Int
     , _oStorageClass :: ObjectStorageClass
@@ -2558,7 +2559,7 @@
         ]
 
 data MultipartUpload = MultipartUpload
-    { _muInitiated    :: Maybe ISO8601
+    { _muInitiated    :: Maybe RFC822
     , _muInitiator    :: Maybe Initiator
     , _muKey          :: Maybe Text
     , _muOwner        :: Maybe Owner
@@ -3182,7 +3183,7 @@
 
 data CopyObjectResult = CopyObjectResult
     { _corETag         :: Maybe Text
-    , _corLastModified :: Maybe ISO8601
+    , _corLastModified :: Maybe RFC822
     } deriving (Eq, Ord, Show)
 
 -- | 'CopyObjectResult' constructor.
diff --git a/gen/Network/AWS/S3/UploadPartCopy.hs b/gen/Network/AWS/S3/UploadPartCopy.hs
--- a/gen/Network/AWS/S3/UploadPartCopy.hs
+++ b/gen/Network/AWS/S3/UploadPartCopy.hs
@@ -70,9 +70,9 @@
     { _upcBucket                         :: Text
     , _upcCopySource                     :: Text
     , _upcCopySourceIfMatch              :: Maybe Text
-    , _upcCopySourceIfModifiedSince      :: Maybe ISO8601
+    , _upcCopySourceIfModifiedSince      :: Maybe RFC822
     , _upcCopySourceIfNoneMatch          :: Maybe Text
-    , _upcCopySourceIfUnmodifiedSince    :: Maybe ISO8601
+    , _upcCopySourceIfUnmodifiedSince    :: Maybe RFC822
     , _upcCopySourceRange                :: Maybe Text
     , _upcCopySourceSSECustomerAlgorithm :: Maybe Text
     , _upcCopySourceSSECustomerKey       :: Maybe (Sensitive Text)
