diff --git a/lib/CheckMap.hs b/lib/CheckMap.hs
index ffd94ec67f5aa14bb67d7836abd9166bf3ecc274..0de90941b006e549a727bff11df8e583f8127b2d 100644
--- a/lib/CheckMap.hs
+++ b/lib/CheckMap.hs
@@ -17,7 +17,8 @@ import qualified Data.Vector                as V
 import           GHC.Generics               (Generic)
 
 import           LintWriter                 (LintResult (..), LintWriter,
-                                             lintsToDeps, runLintWriter)
+                                             lintResultToDeps, lintToDep,
+                                             runLintWriter)
 import           Properties                 (checkLayerProperty, checkMap)
 import           Tiled2                     (Layer (layerName, layerProperties),
                                              Tiledmap (tiledmapLayers),
@@ -56,7 +57,8 @@ runLinter :: Tiledmap -> MapResult ()
 runLinter tiledmap = MapResult
   { mapresultLayer = Just layerMap
   , mapresultGeneral = generalLints  -- no general lints for now
-  , mapresultDepends = concatMap (lintsToDeps . snd) layer
+  , mapresultDepends = concatMap (lintResultToDeps . snd) layer
+    <> mapMaybe lintToDep generalLints
   }
   where
     layerMap :: Map Text (LintResult ())
diff --git a/lib/LintWriter.hs b/lib/LintWriter.hs
index 02815e3e7f739ba75df0d7a54a838f8cbbff302c..120a0f51742a66846095a6bc67ea39b71eff2cfe 100644
--- a/lib/LintWriter.hs
+++ b/lib/LintWriter.hs
@@ -40,8 +40,8 @@ lintToDep = \case
   Depends dep -> Just dep
   _           -> Nothing
 
-lintsToDeps :: LintResult a -> [Dep]
-lintsToDeps (LintResult a) = case a of
+lintResultToDeps :: LintResult a -> [Dep]
+lintResultToDeps (LintResult a) = case a of
   Left (Depends dep) -> [dep]
   Left _             -> []
   Right (_, lints)   -> mapMaybe lintToDep lints
@@ -70,9 +70,6 @@ forbid = lint Forbidden
 suggest = lint Suggestion
 complain = lint Error
 
-dependsLocal = dependsOn . Local
-dependsLink = dependsOn . Link
-dependsMapService = dependsOn . MapLink
 
 
 -- TODO: all these functions should probably also just operate on LintWriter
diff --git a/lib/Properties.hs b/lib/Properties.hs
index 4dada7d955504c36ee692f62cae5868ebb7ae51d..395bc87d4951f99ae59207fa8bb2f780a7e068ce 100644
--- a/lib/Properties.hs
+++ b/lib/Properties.hs
@@ -9,7 +9,7 @@ module Properties (checkLayerProperty, checkMap) where
 import           Control.Monad (unless, when)
 import           Data.Text     (Text, isPrefixOf)
 import           Tiled2        (Layer (..), Property (..), PropertyValue (..),
-                                Tiledmap (..))
+                                Tiledmap (..), Tileset (..))
 import           Util          (layerIsEmpty, prettyprint)
 
 import           LintWriter    (LintWriter, complain, dependsOn, forbid, info,
@@ -131,6 +131,7 @@ checkMap :: Tiledmap -> LintWriter ()
 checkMap tiledmap = do
   -- check properties
   mapM_ (checkMapProperty tiledmap) (tiledmapProperties tiledmap)
+  mapM_ checkTileset (tiledmapTilesets tiledmap)
   -- some layers should exist
   hasLayerNamed "start" (const True)
     "The map must have one layer named \"start\""
@@ -151,7 +152,17 @@ checkMap tiledmap = do
       unless (any pred layers)
         $ complain err
 
-
+-- | check an embedded tile set.
+--
+-- Important to collect dependency files
+checkTileset :: Tileset -> LintWriter ()
+checkTileset tileset = do
+  -- TODO: can tilesets be non-local dependencies?
+  dependsOn $ Local (tilesetImage tileset)
+
+  -- reject tilesets unsuitable for workadventure
+  unless (tilesetTilewidth tileset == 32 && tilesetTileheight tileset == 32)
+    $ complain $ "Tileset " <> tilesetName tileset <> " must have tile size 32 by 32"
 
 -- | does this layer have the given property?
 containsProperty :: [Property] -> Text -> Bool
diff --git a/lib/Tiled2.hs b/lib/Tiled2.hs
index 79033f0f57b0d56255d80593c602d79bb93a9940..f1cca2ebd4f925962591d5995fee397553bc3d35 100644
--- a/lib/Tiled2.hs
+++ b/lib/Tiled2.hs
@@ -293,9 +293,9 @@ instance ToJSON Tile where
 
 data Tileset = Tileset { tilesetFirstgid       :: GlobalId
                          -- ^ GID corresponding to the first tile in the set
-                       , tilesetImage          :: String
+                       , tilesetImage          :: Text
                          -- ^ Image used for tiles in this set
-                       , tilesetName           :: String
+                       , tilesetName           :: Text
                          -- ^ Name given to this tileset
                        , tilesetTilewidth      :: Int
                          -- ^ Maximum width of tiles in this set