diff --git a/lib/Properties.hs b/lib/Properties.hs
index ee774c8ebdbc446f81f778ae429cb117c74ebd89..ed97355a772fe1a19ca063dfc743ec7a9772b10d 100644
--- a/lib/Properties.hs
+++ b/lib/Properties.hs
@@ -163,6 +163,7 @@ checkLayerProperty p@(Property name _value) = case name of
       complain $ "unknown property type " <> prettyprint name
     where
       isForbidden = forbidProperty name
+      requireProperty req = propertyRequiredBy req name
 
       -- | this property can only be used on a layer that contains at least one tiles
       forbidEmptyLayer = do
@@ -208,7 +209,13 @@ forbidProperty name = do
 requireProperty :: HasProperties a => Text -> LintWriter a
 requireProperty name =
   unlessHasProperty name
-  $ complain $ "property "<>prettyprint name<>" requires property "<>prettyprint name
+  $ complain $ "property "<>prettyprint name<>" is required"
+
+propertyRequiredBy :: HasProperties a => Text -> Text -> LintWriter a
+propertyRequiredBy req by =
+  unlessHasProperty req
+  $ complain $ "property "<>prettyprint req<>" is required by property "<> prettyprint by
+
 
 -- | suggest some value for another property if that property does not
 -- also already exist