diff --git a/Yesod/Core.hs b/Yesod/Core.hs
--- a/Yesod/Core.hs
+++ b/Yesod/Core.hs
@@ -30,6 +30,7 @@
     -- * JS loaders
     , loadJsYepnope
     , ScriptLoadPosition (..)
+    , BottomOfHeadAsync
       -- * Misc
     , yesodVersion
     , yesodRender
diff --git a/Yesod/Internal/Core.hs b/Yesod/Internal/Core.hs
--- a/Yesod/Internal/Core.hs
+++ b/Yesod/Internal/Core.hs
@@ -27,6 +27,7 @@
     , messageLoggerHandler
       -- * jsLoader
     , ScriptLoadPosition (..)
+    , BottomOfHeadAsync
     , loadJsYepnope
       -- * Misc
     , yesodVersion
@@ -641,11 +642,15 @@
             : attrs
             )
 
-data Yesod master => ScriptLoadPosition master = BottomOfBody | BottomOfHeadBlocking | BottomOfHeadAsync (
-                  [Text] -- ^ urls to load asynchronously
-                  -> Maybe (HtmlUrl (Route master)) -- ^ widget of js to run on async completion
-                  -> (HtmlUrl (Route master)) -- ^ widget to insert at the bottom of <head>
-                  )
+data ScriptLoadPosition master
+    = BottomOfBody
+    | BottomOfHeadBlocking
+    | BottomOfHeadAsync (BottomOfHeadAsync master)
+
+type BottomOfHeadAsync master
+       = [Text] -- ^ urls to load asynchronously
+      -> Maybe (HtmlUrl (Route master)) -- ^ widget of js to run on async completion
+      -> (HtmlUrl (Route master)) -- ^ widget to insert at the bottom of <head>
 
 left :: Either a b -> Maybe a
 left (Left x) = Just x
diff --git a/test/test.hs b/test/test.hs
new file mode 100644
--- /dev/null
+++ b/test/test.hs
@@ -0,0 +1,5 @@
+import Test.Hspec
+import qualified YesodCoreTest
+
+main :: IO ()
+main = hspecX $ descriptions $ 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:         0.10.2
+version:         0.10.2.1
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
