diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,8 @@
+1.1.0
+=====
+
+  * Simplified Smtpbz.Has
+
 1.0.0
 =====
 
diff --git a/smtpbz.cabal b/smtpbz.cabal
--- a/smtpbz.cabal
+++ b/smtpbz.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.7.
+-- This file has been generated from package.yaml by hpack version 0.36.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           smtpbz
-version:        1.0.1
+version:        1.1.0
 synopsis:       Unofficial API client for smtp.bz
 description:    See README.markdown
 category:       Web
diff --git a/src/Smtpbz.hs b/src/Smtpbz.hs
--- a/src/Smtpbz.hs
+++ b/src/Smtpbz.hs
@@ -3,5 +3,5 @@
   , module Smtpbz.Internal.Api
   ) where
 
-import Smtpbz.Internal.Has (Has(..), Lens, Lens')
+import Smtpbz.Internal.Has (Has(..))
 import Smtpbz.Internal.Api
diff --git a/src/Smtpbz/Internal/Api.hs b/src/Smtpbz/Internal/Api.hs
--- a/src/Smtpbz/Internal/Api.hs
+++ b/src/Smtpbz/Internal/Api.hs
@@ -40,7 +40,7 @@
 import qualified Network.HTTP.Types as Http
 import           Text.Printf (printf)
 
-import           Smtpbz.Internal.Has (Has(..), view)
+import           Smtpbz.Internal.Has (Has(..))
 
 
 -- | User data.
@@ -189,14 +189,14 @@
 
 prepareApiCall :: Has smtpbz => smtpbz -> String -> IO Http.Request
 prepareApiCall smtpbz path = do
-  req <- Http.parseRequest (printf "%s/%s" (view baseUrl smtpbz) path)
+  req <- Http.parseRequest (printf "%s/%s" (baseUrl smtpbz) path)
   pure req
-    { Http.requestHeaders = ("Authorization", view apiKey smtpbz) : Http.requestHeaders req
+    { Http.requestHeaders = ("Authorization", apiKey smtpbz) : Http.requestHeaders req
     }
 
 callApi :: Has smtpbz => smtpbz -> Http.Request -> IO (Http.Response Lazy.ByteString)
 callApi smtpbz req =
-  Http.httpLbs req (view httpMan smtpbz)
+  Http.httpLbs req (httpMan smtpbz)
 
 -- | Check if response status code is in [200, 300).
 successfulCall :: Http.Response Lazy.ByteString -> Bool
diff --git a/src/Smtpbz/Internal/Has.hs b/src/Smtpbz/Internal/Has.hs
--- a/src/Smtpbz/Internal/Has.hs
+++ b/src/Smtpbz/Internal/Has.hs
@@ -1,13 +1,9 @@
 {-# LANGUAGE RankNTypes #-}
 module Smtpbz.Internal.Has
   ( Has(..)
-  , Lens
-  , Lens'
-  , view
   ) where
 
 import           Data.ByteString (ByteString)
-import           Data.Functor.Const (Const(..))
 import           Data.Text (Text)
 import qualified Network.HTTP.Conduit as Http
 
@@ -16,18 +12,8 @@
 -- and the user may want to override.
 class Has t where
   -- | API key; get one at https://smtp.bz/panel/user
-  apiKey :: Lens' t ByteString
+  apiKey :: t -> ByteString
   -- | API base URL; Most likely, https://api.smtp.bz/v1
-  baseUrl :: Lens' t Text
+  baseUrl :: t -> Text
   -- | The 'Http.Manager' under which all requests will be made.
-  httpMan :: Lens' t Http.Manager
-
--- | Type changing stabby lenses.
-type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t
-
--- | Stabby lenses that can't change the type.
-type Lens' s a = Lens s s a a
-
-view :: Lens s t a b -> s -> a
-view l x = getConst (l Const x)
-{-# INLINE view #-}
+  httpMan :: t -> Http.Manager
