diff --git a/antiope-sns.cabal b/antiope-sns.cabal
--- a/antiope-sns.cabal
+++ b/antiope-sns.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 9de605ddd27512e8533789e93bc221cd2e0c4282d9f6f80ec73869cf11111554
+-- hash: f724ac363b7ba7a65b57696d5ed79c8cf710f6bd872944c60bbecbb00b77113a
 
 name:           antiope-sns
-version:        4.0.1
+version:        5.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
@@ -42,7 +42,6 @@
     , unliftio-core
   exposed-modules:
       Antiope.SNS
-      Antiope.SNS.Classy
       Antiope.SNS.Types
   other-modules:
       Paths_antiope_sns
diff --git a/src/Antiope/SNS.hs b/src/Antiope/SNS.hs
--- a/src/Antiope/SNS.hs
+++ b/src/Antiope/SNS.hs
@@ -7,30 +7,27 @@
 
 import Antiope.SNS.Types
 import Control.Lens
-import Control.Monad.IO.Unlift (MonadUnliftIO)
-import Data.Text               (Text)
-import Network.AWS             (HasEnv)
+import Data.Text         (Text)
+import Network.AWS       (MonadAWS)
 import Network.AWS.SNS
 
 import qualified Network.AWS as AWS
 
-publishMessage :: (MonadUnliftIO m, HasEnv e)
-  => e
-  -> Topic
+publishMessage :: MonadAWS m
+  => Topic
   -> Text
   -> m (Maybe MessageId)
-publishMessage e topicArn message = do
-  resp <- AWS.runResourceT $ AWS.runAWS e $ AWS.send $ publish message & pTopicARN <>~ (topicArn ^. tTopicARN)
+publishMessage topicArn message = do
+  resp <- AWS.send $ publish message & pTopicARN <>~ (topicArn ^. tTopicARN)
   return $ MessageId <$> resp ^. prsMessageId
 
-subscribeTopic :: (MonadUnliftIO m, HasEnv e)
-  => e
-  -> Topic
+subscribeTopic :: MonadAWS m
+  => Topic
   -> Protocol
   -> Endpoint
   -> m (Maybe SubscriptionArn)
-subscribeTopic e topicArn (Protocol p) ep = case topicArn ^. tTopicARN of
+subscribeTopic topicArn (Protocol p) ep = case topicArn ^. tTopicARN of
   Just t -> do
-    resp <- AWS.runResourceT $ AWS.runAWS e $ AWS.send $ subscribe t p & subEndpoint <>~ (ep ^. eEndpointARN)
+    resp <- AWS.send $ subscribe t p & subEndpoint <>~ (ep ^. eEndpointARN)
     return $ SubscriptionArn <$> resp ^. srsSubscriptionARN
   Nothing -> return Nothing
diff --git a/src/Antiope/SNS/Classy.hs b/src/Antiope/SNS/Classy.hs
deleted file mode 100644
--- a/src/Antiope/SNS/Classy.hs
+++ /dev/null
@@ -1,33 +0,0 @@
-module Antiope.SNS.Classy
-  ( publishMessage
-  , subscribeTopic
-  , module Antiope.SNS.Types
-  , module Network.AWS.SNS
-  ) where
-
-import Antiope.SNS.Types
-import Control.Lens
-import Data.Text         (Text)
-import Network.AWS       (MonadAWS)
-import Network.AWS.SNS
-
-import qualified Network.AWS as AWS
-
-publishMessage :: MonadAWS m
-  => Topic
-  -> Text
-  -> m (Maybe MessageId)
-publishMessage topicArn message = do
-  resp <- AWS.send $ publish message & pTopicARN <>~ (topicArn ^. tTopicARN)
-  return $ MessageId <$> resp ^. prsMessageId
-
-subscribeTopic :: MonadAWS m
-  => Topic
-  -> Protocol
-  -> Endpoint
-  -> m (Maybe SubscriptionArn)
-subscribeTopic topicArn (Protocol p) ep = case topicArn ^. tTopicARN of
-  Just t -> do
-    resp <- AWS.send $ subscribe t p & subEndpoint <>~ (ep ^. eEndpointARN)
-    return $ SubscriptionArn <$> resp ^. srsSubscriptionARN
-  Nothing -> return Nothing
