diff --git a/src/Tesla.hs b/src/Tesla.hs
--- a/src/Tesla.hs
+++ b/src/Tesla.hs
@@ -3,7 +3,7 @@
 Description: Tesla API implementation.
 
 'Tesla' is intended to provide access to all known Tesla APIs as
-documented at https://tesla-api.timdorr.com/
+documented at https://www.teslaapi.io/
 -}
 
 {-# LANGUAGE OverloadedStrings #-}
@@ -90,9 +90,9 @@
 products ai = decodeProducts <$> jgetWith (authOpts ai) productsURL
 
 -- | Get a mapping of vehicle name to vehicle ID.
-vehicles :: MonadIO m => AuthInfo -> m (Map Text Text)
-vehicles = fmap (Map.fromList . toListOf (folded . _ProductVehicle)) . products
+vehicles :: [Product] -> (Map Text Text)
+vehicles = Map.fromList . toListOf (folded . _ProductVehicle)
 
 -- | Get a list of Solar ID installations.
-energyIDs :: MonadIO m => AuthInfo -> m [EnergyID]
-energyIDs = fmap (toListOf $ folded . _ProductEnergy) . products
+energyIDs :: [Product] -> [EnergyID]
+energyIDs = toListOf (folded . energyID)
diff --git a/src/Tesla/Auth.hs b/src/Tesla/Auth.hs
--- a/src/Tesla/Auth.hs
+++ b/src/Tesla/Auth.hs
@@ -17,7 +17,8 @@
                   ) where
 
 import           Control.Lens
-import           Data.Aeson             (FromJSON (..), Options, defaultOptions, fieldLabelModifier, genericParseJSON)
+import           Data.Aeson             (FromJSON (..), Options, ToJSON (..), defaultOptions, fieldLabelModifier,
+                                         genericParseJSON, genericToJSON)
 import           Generics.Deriving.Base (Generic)
 
 -- | An Authentication request.
@@ -56,3 +57,6 @@
 
 instance FromJSON AuthResponse where
   parseJSON = genericParseJSON jsonOpts
+
+instance ToJSON AuthResponse where
+  toJSON = genericToJSON jsonOpts
diff --git a/src/Tesla/Car.hs b/src/Tesla/Car.hs
--- a/src/Tesla/Car.hs
+++ b/src/Tesla/Car.hs
@@ -41,7 +41,6 @@
 import           Control.Lens
 import           Control.Monad           ((<=<))
 import           Control.Monad.Catch     (MonadCatch (..), MonadMask (..), MonadThrow (..))
-import           Control.Monad.Fail      (MonadFail (..))
 import           Control.Monad.IO.Class  (MonadIO (..))
 import           Control.Monad.IO.Unlift (MonadUnliftIO, withRunInIO)
 import           Control.Monad.Logger    (MonadLogger)
@@ -108,7 +107,7 @@
 runNamedCar :: MonadIO m => Text -> IO AuthInfo -> Car m a -> m a
 runNamedCar name ai f = do
   a <- liftIO ai
-  vs <- vehicles a
+  vs <- vehicles <$> products a
   c <- case Map.lookup name vs of
          Nothing -> throw $ mconcat [show name, " is not a valid vehicle name.  Try one of: ",
                                      show $ Map.keys vs]
diff --git a/tesla.cabal b/tesla.cabal
--- a/tesla.cabal
+++ b/tesla.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 8d58aba9e4939289760f458ed52ae77cefb0e80437c28f6672627ef98afe987f
+-- hash: e88c4dc4c9bcb802b86bb2418fc6188ea7f37139b888b3cc1d9eded702299a5a
 
 name:           tesla
-version:        0.2.0.0
+version:        0.3.0.1
 synopsis:       Tesla API client.
 description:    Please see the README on GitHub at <https://github.com/dustin/tesla#readme>
 category:       Web
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -5,6 +5,7 @@
 import           Test.Tasty.QuickCheck as QC
 
 import           Data.Aeson
+import qualified Data.Map.Strict       as Map
 import           Data.Maybe            (fromJust)
 import           Data.Ratio
 import           Data.Time.Clock       (UTCTime)
@@ -40,9 +41,11 @@
 testOpenDoors =  assertEqual "open" [RearTrunk] (openDoors sampleVehicleData)
 
 testParseProducts :: Assertion
-testParseProducts = assertEqual "products" [ProductVehicle "MyCar" "848528",
-                                            ProductEnergy 2848535]
-                    (decodeProducts sampleProducts)
+testParseProducts = do
+  let prods = decodeProducts sampleProducts
+  assertEqual "products" [ProductVehicle "MyCar" "848528", ProductEnergy 2848535] prods
+  assertEqual "vehicles" (Map.fromList [("MyCar", "848528")]) $ vehicles prods
+  assertEqual "energy" [2848535] $ energyIDs prods
 
 tests :: [TestTree]
 tests = [
