diff --git a/antiope-sqs.cabal b/antiope-sqs.cabal
--- a/antiope-sqs.cabal
+++ b/antiope-sqs.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: f45ea86f5796546a0006488266f03623cd4e14683965ef76ea04c9d4f0ef0ea4
+-- hash: db3b6da51ad580cc1a112c2313bd6564fe221725e4f956aedf464867d9c72793
 
 name:           antiope-sqs
-version:        3.1.0
+version:        4.0.0
 description:    Please see the README on Github at <https://github.com/arbor/antiope#readme>
 category:       Services
 homepage:       https://github.com/arbor/antiope#readme
diff --git a/src/Antiope/SQS.hs b/src/Antiope/SQS.hs
--- a/src/Antiope/SQS.hs
+++ b/src/Antiope/SQS.hs
@@ -1,15 +1,13 @@
 module Antiope.SQS
-( FromText(..), fromText
-, ToText(..)
-, QueueUrl(..)
+( QueueUrl(..)
 , SQSError(..)
 , readQueue
 , drainQueue
 , ackMessage
 , ackMessages
 , messageInBody
-, s3Location
-, s3Location'
+, messageToS3Uri
+, messageToS3Uri'
 ) where
 
 import Antiope.S3              (S3Uri (..))
@@ -22,8 +20,7 @@
 import Data.Maybe              (catMaybes)
 import Data.Text               (Text, pack, unpack)
 import Network.AWS             (HasEnv)
-import Network.AWS.Data.Text   (FromText (..), ToText (..), fromText, toText)
-import Network.AWS.S3          hiding (s3Location)
+import Network.AWS.S3          (BucketName (..), ObjectKey (..))
 import Network.AWS.SQS
 
 import qualified Network.AWS as AWS
@@ -74,11 +71,11 @@
 messageInBody :: Text -> Maybe Text
 messageInBody body = body ^? key "Message" . _String
 
-s3Location :: Message -> Maybe S3Uri
-s3Location msg = join $ s3Location' <$> msg ^. mBody
+messageToS3Uri :: Message -> Maybe S3Uri
+messageToS3Uri msg = join $ messageToS3Uri' <$> msg ^. mBody
 
-s3Location' :: Text -> Maybe S3Uri
-s3Location' msg = do
+messageToS3Uri' :: Text -> Maybe S3Uri
+messageToS3Uri' msg = do
   s3m <- messageInBody msg ^? _Just . key "Records" . nth 0 . key "s3"
   b   <- s3m ^? key "bucket" . key "name" . _String
   k   <- s3m ^? key "object" . key "key" . _String
diff --git a/src/Antiope/SQS/Classy.hs b/src/Antiope/SQS/Classy.hs
--- a/src/Antiope/SQS/Classy.hs
+++ b/src/Antiope/SQS/Classy.hs
@@ -1,28 +1,25 @@
 module Antiope.SQS.Classy
-( FromText(..), fromText
-, ToText(..)
-, QueueUrl(..)
+( QueueUrl(..)
 , SQSError(..)
 , readQueue
 , drainQueue
 , ackMessage
 , ackMessages
 , messageInBody
-, s3Location
-, s3Location'
+, messageToS3Uri
+, messageToS3Uri'
 ) where
 
-import Antiope.S3            (S3Uri (..))
-import Antiope.SQS.Types     (QueueUrl (QueueUrl), SQSError (DeleteMessageBatchError))
+import Antiope.S3          (S3Uri (..))
+import Antiope.SQS.Types   (QueueUrl (QueueUrl), SQSError (DeleteMessageBatchError))
 import Control.Lens
-import Control.Monad         (join)
-import Control.Monad.Loops   (unfoldWhileM)
+import Control.Monad       (join)
+import Control.Monad.Loops (unfoldWhileM)
 import Data.Aeson.Lens
-import Data.Maybe            (catMaybes)
-import Data.Text             (Text, pack, unpack)
-import Network.AWS           (MonadAWS)
-import Network.AWS.Data.Text (FromText (..), ToText (..), fromText, toText)
-import Network.AWS.S3        hiding (s3Location)
+import Data.Maybe          (catMaybes)
+import Data.Text           (Text, pack, unpack)
+import Network.AWS         (MonadAWS)
+import Network.AWS.S3      (BucketName (BucketName), ObjectKey (ObjectKey))
 import Network.AWS.SQS
 
 import qualified Network.AWS as AWS
@@ -69,11 +66,11 @@
 messageInBody :: Text -> Maybe Text
 messageInBody body = body ^? key "Message" . _String
 
-s3Location :: Message -> Maybe S3Uri
-s3Location msg = join $ s3Location' <$> msg ^. mBody
+messageToS3Uri :: Message -> Maybe S3Uri
+messageToS3Uri msg = join $ messageToS3Uri' <$> msg ^. mBody
 
-s3Location' :: Text -> Maybe S3Uri
-s3Location' msg = do
+messageToS3Uri' :: Text -> Maybe S3Uri
+messageToS3Uri' msg = do
   s3m <- messageInBody msg ^? _Just . key "Records" . nth 0 . key "s3"
   b   <- s3m ^? key "bucket" . key "name" . _String
   k   <- s3m ^? key "object" . key "key" . _String
