diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,25 +1,20 @@
-The following license covers this documentation, and the source code, except
-where otherwise indicated.
-
-Copyright 2010, Michael Snoyman. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
+Copyright (c) 2012 Michael Snoyman, http://www.yesodweb.com/
 
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
 
-* Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
-OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Yesod/Internal/Core.hs b/Yesod/Internal/Core.hs
--- a/Yesod/Internal/Core.hs
+++ b/Yesod/Internal/Core.hs
@@ -727,7 +727,7 @@
       let host = "" -- fixme, properly lock sessions to client address
       decodeClientSession key now host val
     save sess' now' = do
-      -- fixme should we be caching this?
+      -- We should never cache the IV!  Be careful!
       iv <- liftIO CS.randomIV
       return [AddCookie def
           { setCookieName = sessionName
diff --git a/test.hs b/test.hs
--- a/test.hs
+++ b/test.hs
@@ -2,4 +2,4 @@
 import qualified YesodCoreTest
 
 main :: IO ()
-main = hspecX $ descriptions $ YesodCoreTest.specs
+main = hspecX $ YesodCoreTest.specs
diff --git a/test/YesodCoreTest.hs b/test/YesodCoreTest.hs
--- a/test/YesodCoreTest.hs
+++ b/test/YesodCoreTest.hs
@@ -15,7 +15,7 @@
 
 import Test.Hspec
 
-specs :: [Specs]
+specs :: [Spec]
 specs = 
     [ cleanPathTest
     , exceptionsTest
diff --git a/test/YesodCoreTest/Cache.hs b/test/YesodCoreTest/Cache.hs
--- a/test/YesodCoreTest/Cache.hs
+++ b/test/YesodCoreTest/Cache.hs
@@ -35,7 +35,7 @@
     Nothing <- cacheLookup key
     return ()
 
-cacheTest :: [Spec]
+cacheTest :: Spec
 cacheTest =
   describe "Test.Cache"
     [ it "works" works
diff --git a/test/YesodCoreTest/CleanPath.hs b/test/YesodCoreTest/CleanPath.hs
--- a/test/YesodCoreTest/CleanPath.hs
+++ b/test/YesodCoreTest/CleanPath.hs
@@ -62,7 +62,7 @@
 getBarR = return $ RepPlain "bar"
 getPlainR = return $ RepPlain "plain"
 
-cleanPathTest :: [Spec]
+cleanPathTest :: Spec
 cleanPathTest =
   describe "Test.CleanPath"
     [ it "remove trailing slash" removeTrailingSlash
diff --git a/test/YesodCoreTest/ErrorHandling.hs b/test/YesodCoreTest/ErrorHandling.hs
--- a/test/YesodCoreTest/ErrorHandling.hs
+++ b/test/YesodCoreTest/ErrorHandling.hs
@@ -52,7 +52,7 @@
    _ <- error $ show x
    getHomeR
 
-errorHandlingTest :: [Spec]
+errorHandlingTest :: Spec
 errorHandlingTest = describe "Test.ErrorHandling"
     [ it "says not found" caseNotFound
     , it "says 'There was an error' before runRequestBody" caseBefore
diff --git a/test/YesodCoreTest/Exceptions.hs b/test/YesodCoreTest/Exceptions.hs
--- a/test/YesodCoreTest/Exceptions.hs
+++ b/test/YesodCoreTest/Exceptions.hs
@@ -30,7 +30,7 @@
     setHeader "foo" "bar"
     redirectWith status301 RootR
 
-exceptionsTest :: [Spec]
+exceptionsTest :: Spec
 exceptionsTest = describe "Test.Exceptions"
     [ it "500" case500
     , it "redirect keeps headers" caseRedirect
diff --git a/test/YesodCoreTest/InternalRequest.hs b/test/YesodCoreTest/InternalRequest.hs
--- a/test/YesodCoreTest/InternalRequest.hs
+++ b/test/YesodCoreTest/InternalRequest.hs
@@ -10,7 +10,7 @@
 import Yesod.Request (Request (..))
 import Test.Hspec
 
-randomStringSpecs :: [Spec]
+randomStringSpecs :: Spec
 randomStringSpecs = describe "Yesod.Internal.Request.randomString"
   [ it "looks reasonably random" looksRandom
   , it "does not repeat itself" $ noRepeat 10 100
@@ -30,7 +30,7 @@
 g = error "test/YesodCoreTest/InternalRequest.g"
 
 
-tokenSpecs :: [Spec]
+tokenSpecs :: Spec
 tokenSpecs = describe "Yesod.Internal.Request.parseWaiRequest (reqToken)"
   [ it "is Nothing if sessions are disabled" noDisabledToken
   , it "ignores pre-existing token if sessions are disabled" ignoreDisabledToken
@@ -55,7 +55,7 @@
   r = parseWaiRequest' defaultRequest [("_TOKEN", "old")] True g
 
 
-langSpecs :: [Spec]
+langSpecs :: Spec
 langSpecs = describe "Yesod.Internal.Request.parseWaiRequest (reqLangs)"
   [ it "respects Accept-Language" respectAcceptLangs
   , it "respects sessions" respectSessionLang
@@ -93,8 +93,9 @@
         } [("_LANG", "en-SESSION")] False g
 
 
-internalRequestTest :: [Spec]
-internalRequestTest = descriptions [ randomStringSpecs
-                                   , tokenSpecs
-                                   , langSpecs
-                                   ]
+internalRequestTest :: Spec
+internalRequestTest = describe "Test.InternalRequestTest" 
+    [ randomStringSpecs
+    , tokenSpecs
+    , langSpecs
+    ]
diff --git a/test/YesodCoreTest/JsLoader.hs b/test/YesodCoreTest/JsLoader.hs
--- a/test/YesodCoreTest/JsLoader.hs
+++ b/test/YesodCoreTest/JsLoader.hs
@@ -22,7 +22,7 @@
 getHeadR :: Handler RepHtml
 getHeadR = defaultLayout $ addScriptRemote "load.js"
 
-specs :: [Spec]
+specs :: Spec
 specs = describe "Test.JsLoader" [
     it "link from head" $ runner H $ do
       res <- request defaultRequest
diff --git a/test/YesodCoreTest/Links.hs b/test/YesodCoreTest/Links.hs
--- a/test/YesodCoreTest/Links.hs
+++ b/test/YesodCoreTest/Links.hs
@@ -20,7 +20,7 @@
 getRootR :: Handler RepHtml
 getRootR = defaultLayout $ toWidget [hamlet|<a href=@{RootR}>|]
 
-linksTest :: [Spec]
+linksTest :: Spec
 linksTest = describe "Test.Links"
     [ it "linkToHome" case_linkToHome
     ]
diff --git a/test/YesodCoreTest/Media.hs b/test/YesodCoreTest/Media.hs
--- a/test/YesodCoreTest/Media.hs
+++ b/test/YesodCoreTest/Media.hs
@@ -49,7 +49,7 @@
     assertStatus 200 res
     flip assertBody res "<!DOCTYPE html>\n<html><head><title></title><link rel=\"stylesheet\" href=\"all.css\"><link rel=\"stylesheet\" media=\"screen\" href=\"screen.css\"></head><body></body></html>"
 
-mediaTest :: [Spec]
+mediaTest :: Spec
 mediaTest = describe "Test.Media"
     [ it "media" caseMedia
     , it "media link" caseMediaLink
diff --git a/test/YesodCoreTest/NoOverloadedStrings.hs b/test/YesodCoreTest/NoOverloadedStrings.hs
--- a/test/YesodCoreTest/NoOverloadedStrings.hs
+++ b/test/YesodCoreTest/NoOverloadedStrings.hs
@@ -44,7 +44,7 @@
     res <- request defaultRequest
     assertBody mempty res
 
-noOverloadedTest :: [Spec]
+noOverloadedTest :: Spec
 noOverloadedTest = describe "Test.NoOverloadedStrings"
     [ it "sanity" case_sanity
     ]
diff --git a/test/YesodCoreTest/Redirect.hs b/test/YesodCoreTest/Redirect.hs
--- a/test/YesodCoreTest/Redirect.hs
+++ b/test/YesodCoreTest/Redirect.hs
@@ -26,7 +26,7 @@
 getR307 = redirectWith H.status307 RootR
 getRRegular = redirect RootR
 
-specs :: [Spec]
+specs :: Spec
 specs = describe "Redirect" [
     it "301 redirect" $ app $ do
       res <- request defaultRequest { pathInfo = ["r301"] }
diff --git a/test/YesodCoreTest/WaiSubsite.hs b/test/YesodCoreTest/WaiSubsite.hs
--- a/test/YesodCoreTest/WaiSubsite.hs
+++ b/test/YesodCoreTest/WaiSubsite.hs
@@ -25,7 +25,7 @@
 getRootR :: Handler ()
 getRootR = return ()
 
-specs :: [Spec]
+specs :: Spec
 specs = describe "WaiSubsite" [
     it "root" $ app $ do
       res <- request defaultRequest { pathInfo = [] }
diff --git a/test/YesodCoreTest/Widget.hs b/test/YesodCoreTest/Widget.hs
--- a/test/YesodCoreTest/Widget.hs
+++ b/test/YesodCoreTest/Widget.hs
@@ -77,7 +77,7 @@
   where
     someHtml = [shamlet|somehtml|]
 
-widgetTest :: [Spec]
+widgetTest :: Spec
 widgetTest = describe "Test.Widget"
     [ it "addJuliusBody" case_addJuliusBody
     , it "whamlet" case_whamlet
diff --git a/test/test.hs b/test/test.hs
--- a/test/test.hs
+++ b/test/test.hs
@@ -2,4 +2,4 @@
 import qualified YesodCoreTest
 
 main :: IO ()
-main = hspecX $ descriptions $ YesodCoreTest.specs
+main = hspecX $ YesodCoreTest.specs
diff --git a/yesod-core.cabal b/yesod-core.cabal
--- a/yesod-core.cabal
+++ b/yesod-core.cabal
@@ -1,5 +1,5 @@
 name:            yesod-core
-version:         1.0.1.1
+version:         1.0.1.2
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -42,27 +42,20 @@
 
 flag blaze_html_0_5
     description: use blaze-html 0.5 and blaze-markup 0.5
-    default: False
-
-flag ghc7
+    default: True
 
 library
-    if flag(ghc7)
-        build-depends:   base              >= 4.3      && < 5
-        cpp-options:     -DGHC7
-    else
-        build-depends:   base              >= 4        && < 4.3
-
     -- Work around a bug in cabal. Without this, wai-test doesn't get built and
     -- we have a missing dependency during --enable-tests builds.
     if flag(test)
         build-depends: wai-test
 
-    build-depends:   time                  >= 1.1.4
+    build-depends:   base                  >= 4.3      && < 5
+                   , time                  >= 1.1.4
                    , yesod-routes          >= 1.0      && < 1.1
                    , wai                   >= 1.2      && < 1.3
                    , wai-extra             >= 1.2      && < 1.3
-                   , bytestring            >= 0.9.1.4  && < 0.10
+                   , bytestring            >= 0.9.1.4
                    , text                  >= 0.7      && < 0.12
                    , template-haskell
                    , path-pieces           >= 0.1      && < 0.2
@@ -78,7 +71,7 @@
                    , cereal                >= 0.3      && < 0.4
                    , old-locale            >= 1.0.0.2  && < 1.1
                    , failure               >= 0.2      && < 0.3
-                   , containers            >= 0.2      && < 0.5
+                   , containers            >= 0.2
                    , monad-control         >= 0.3      && < 0.4
                    , transformers-base     >= 0.4
                    , cookie                >= 0.4      && < 0.5
@@ -124,17 +117,9 @@
     main-is: test.hs
     hs-source-dirs: test
 
-    if flag(ghc7)
-        type: exitcode-stdio-1.0
-        build-depends:   base                      >= 4.3      && < 5
-        cpp-options:     -DGHC7
-        main-is:         test.hs
-    else
-        type: exitcode-stdio-1.0
-        build-depends:   base                      >= 4        && < 4.3
-        main-is:         test.hs
     cpp-options:   -DTEST
-    build-depends: hspec >= 0.8 && < 0.10
+    build-depends: base
+                  ,hspec >= 1.1 && < 1.2
                   ,wai-test
                   ,wai
                   ,yesod-core
