diff --git a/aztecs-asset.cabal b/aztecs-asset.cabal
--- a/aztecs-asset.cabal
+++ b/aztecs-asset.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.4
 name:          aztecs-asset
-version:       0.1.0.0
+version:       0.2.0.0
 license:       BSD-3-Clause
 license-file:  LICENSE
 maintainer:    matt@hunzinger.me
@@ -26,8 +26,8 @@
     default-language: Haskell2010
     ghc-options:      -Wall
     build-depends:
-        base >=4 && <5,
-        aztecs >= 0.3,
-        containers >=0.7,
+        base >=4.6 && <5,
+        aztecs >= 0.5,
+        containers >=0.6,
         mtl >=2,
         linear >= 1
diff --git a/src/Data/Aztecs/Asset.hs b/src/Data/Aztecs/Asset.hs
--- a/src/Data/Aztecs/Asset.hs
+++ b/src/Data/Aztecs/Asset.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE TypeFamilies #-}
 
 module Data.Aztecs.Asset where
 
@@ -15,16 +16,16 @@
 import Data.Data (Typeable)
 import Data.Foldable (foldrM)
 import Data.IORef (IORef, newIORef, readIORef, writeIORef)
-import Data.Map (Map)
-import qualified Data.Map as Map
+import Data.Map.Strict (Map)
+import qualified Data.Map.Strict as Map
 
 newtype AssetId = AssetId {unAssetId :: Int}
   deriving (Eq, Ord, Show)
 
 data AssetServer a = AssetServer
-  { assetServerAssets :: Map AssetId a,
-    loadingAssets :: Map AssetId (IORef (Maybe a)),
-    nextAssetId :: AssetId
+  { assetServerAssets :: !(Map AssetId a),
+    loadingAssets :: !(Map AssetId (IORef (Maybe a))),
+    nextAssetId :: !AssetId
   }
 
 instance (Typeable a) => Component (AssetServer a)
@@ -38,17 +39,19 @@
     }
 
 class Asset a where
-  loadAsset :: FilePath -> IO a
+  type AssetConfig a
 
+  loadAsset :: FilePath -> AssetConfig a -> IO a
+
 newtype Handle a = Handle {handleId :: AssetId}
   deriving (Eq, Ord, Show)
 
-load :: (Asset a) => FilePath -> AssetServer a -> IO (Handle a, AssetServer a)
-load path server = do
+load :: (Asset a) => FilePath -> AssetConfig a -> AssetServer a -> IO (Handle a, AssetServer a)
+load path cfg server = do
   let assetId = nextAssetId server
   v <- newIORef Nothing
   _ <- forkIO $ do
-    a <- loadAsset path
+    a <- loadAsset path cfg
     writeIORef v (Just a)
   return
     ( Handle assetId,
@@ -65,7 +68,7 @@
 loadAssets =
   S.map_
     ( Q.fetch @_ @(AssetServer a)
-        >>> Q.run
+        >>> Q.task
           ( \server ->
               foldrM
                 ( \(aId, v) acc -> do
