diff --git a/Test/QuickCheck/Monadic/WebDriver.hs b/Test/QuickCheck/Monadic/WebDriver.hs
--- a/Test/QuickCheck/Monadic/WebDriver.hs
+++ b/Test/QuickCheck/Monadic/WebDriver.hs
@@ -5,39 +5,65 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE OverloadedStrings   #-}
 
-module Test.QuickCheck.Monadic.WebDriver 
-    (
-    -- * Example
-    -- $example
-    ) where
 
-import Prelude
 
+-- |
+-- Module:      Test.QuickCheck.Monadic.WebDriver
+-- Copyright:   (c) 2014 Christian Brink
+-- License:     MIT
+-- Maintainer:  Christian Brink
+-- 
+-- Example usage:
+--
+-- > import Test.QuickCheck
+-- > import Test.QuickCheck.Monadic (run, pick, assert)
+-- > import Test.WebDriver
+-- > prop_Example = monadicWD context $ do
+-- >     url <- pick $ oneof ("http://www.yesodweb.com", "http://snapframework.com/")
+-- >     run $ openPage url
+-- >     assert True
+-- >     runIO $ putStrLn $ "We've just evaluated a `Gen a` using `pick` and \
+-- >                        \a `WD ()` using `run`, then asserted a that a \
+-- >                        \property holds using `assert`."
+-- >  where context = SessionParams allCaps (return ())
+
+module Test.QuickCheck.Monadic.WebDriver where
+
+import Prelude
 import Test.QuickCheck
 import Test.QuickCheck.Property
 import Test.QuickCheck.Monadic as QCM
-
 import Test.WebDriver
-
-import Data.Monoid                            ((<>))
 import Control.Monad.IO.Class
 
--- |Patterned after `Test.QuickCheck.Monadic.monadicIO`.
-monadicWD capabilities wd = monadic wdProperty wd
-    where runSesh    = runSession defaultSession capabilities
-          wdProperty = ioProperty . runSesh
+data Context = ExistingSession WDSession 
+             | SessionParams Capabilities (WD ())
 
+-- |Patterned after `monadicIO` (and `ioProperty`).
+monadicWD context wd = monadic wdProperty wd
+  where 
+    wdProperty = ioProperty . runSesh
+    runSesh action = case context of
+        ExistingSession sesh -> runWD sesh action
+        SessionParams caps setup -> runSession defaultSession caps $ setup >> action
+          
+
 runIO :: IO a -> PropertyM WD a
 runIO = QCM.run . liftIO
 
+chromeOpts = [ "--log-level=0" ]
+
+chrome' = chrome { chromeOptions = chromeOpts }
+
+caps browser = allCaps {browser=browser} 
+
+capsChrome = caps chrome'
+capsFirefox = caps firefox
+
+seshParams browser = SessionParams (caps browser) $ return ()
+
+seshParamsChrome   = seshParams chrome'
+seshParamsFirefox' = seshParams firefox
+
 -- $example
--- > import Test.QuickCheck
--- > import Test.QuickCheck.Monadic (run, pick, assert)
--- > import Test.WebDriver
--- > prop_Example = monadicWD allCaps $ do
--- >     url <- pick $ oneof ("http://www.yesodweb.com", "http://snapframework.com/")
--- >     run $ openPage url
--- >     assert True
--- >     runIO $ putStrLn $ "We've just evaluated a `Gen a` using `pick` and \
--- >                        \a `WD ()` using `run`, then asserted a that a \
--- >                        \property holds using `assert`."
+--
diff --git a/quickcheck-webdriver.cabal b/quickcheck-webdriver.cabal
--- a/quickcheck-webdriver.cabal
+++ b/quickcheck-webdriver.cabal
@@ -2,7 +2,7 @@
 --  documentation, see http://haskell.org/cabal/users-guide/
 
 name:                quickcheck-webdriver
-version:             0.1.0.1
+version:             0.1.0.3
 synopsis:            Utilities for using WebDriver with QuickCheck
 -- description:         
 license:             MIT
