diff --git a/src/hb-ot-layout-gsub-private.h b/src/hb-ot-layout-gsub-private.h
index 044703a..74f4e36 100644
--- a/src/hb-ot-layout-gsub-private.h
+++ b/src/hb-ot-layout-gsub-private.h
@@ -98,7 +98,7 @@
     }
   }
 
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
 
     hb_codepoint_t glyph_id = IN_CURGLYPH ();
 
@@ -139,7 +139,7 @@
       _hb_ot_layout_set_glyph_property (layout, substitute[n], property);
   }
 
-  inline bool substitute_sequence (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute_sequence (LOOKUP_ARGS_DEF) const {
 
     if (HB_UNLIKELY (!substitute.len))
       return false;
@@ -173,10 +173,10 @@
 
   private:
 
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
 
     unsigned int index = (this+coverage) (IN_CURGLYPH ());
-    return (this+sequence[index]).substitute_sequence (LOOKUP_ARGS, property);
+    return (this+sequence[index]).substitute_sequence (LOOKUP_ARGS);
   }
 
   private:
@@ -196,9 +196,9 @@
 
   private:
 
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
     switch (u.substFormat) {
-    case 1: return u.format1.substitute (LOOKUP_ARGS, property);
+    case 1: return u.format1.substitute (LOOKUP_ARGS);
     default:return false;
     }
   }
@@ -222,7 +222,7 @@
 
   private:
 
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
 
     hb_codepoint_t glyph_id = IN_CURGLYPH ();
 
@@ -274,9 +274,9 @@
 
   private:
 
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
     switch (u.substFormat) {
-    case 1: return u.format1.substitute (LOOKUP_ARGS, property);
+    case 1: return u.format1.substitute (LOOKUP_ARGS);
     default:return false;
     }
   }
@@ -300,7 +300,6 @@
   inline bool substitute_ligature (LOOKUP_ARGS_DEF, bool is_mark) const {
 
     unsigned int i, j;
-    unsigned int property;
     unsigned int count = compCount;
 
     if (HB_UNLIKELY (buffer->in_pos + count > buffer->in_length ||
@@ -403,7 +402,7 @@
 
   private:
 
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
 
     hb_codepoint_t glyph_id = IN_CURGLYPH ();
 
@@ -432,9 +431,9 @@
 
   private:
 
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
     switch (u.substFormat) {
-    case 1: return u.format1.substitute (LOOKUP_ARGS, property);
+    case 1: return u.format1.substitute (LOOKUP_ARGS);
     default:return false;
     }
   }
@@ -453,7 +452,7 @@
 
 struct ContextSubst : Context {
 
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
     return this->apply (LOOKUP_ARGS, substitute_lookup);
   }
 };
@@ -500,7 +499,7 @@
 
 struct ChainContextSubstFormat1 {
   /* TODO */
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
     return false;
   }
 
@@ -560,7 +559,7 @@
 
 struct ChainContextSubstFormat2 {
   /* TODO */
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
     return false;
   }
 
@@ -590,7 +589,7 @@
 
 struct ChainContextSubstFormat3 {
   /* TODO */
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
     return false;
   }
 
@@ -622,11 +621,11 @@
 
   private:
 
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
     switch (u.substFormat) {
-    case 1: return u.format1.substitute (LOOKUP_ARGS, property);
-    case 2: return u.format2.substitute (LOOKUP_ARGS, property);
-    case 3: return u.format3.substitute (LOOKUP_ARGS, property);
+    case 1: return u.format1.substitute (LOOKUP_ARGS);
+    case 2: return u.format2.substitute (LOOKUP_ARGS);
+    case 3: return u.format3.substitute (LOOKUP_ARGS);
     default:return false;
     }
   }
@@ -648,7 +647,7 @@
 
   private:
   inline unsigned int get_type (void) const { return extensionLookupType; }
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const;
+  inline bool substitute (LOOKUP_ARGS_DEF) const;
 
   private:
   USHORT	substFormat;		/* Format identifier. Set to 1. */
@@ -674,9 +673,9 @@
     }
   }
 
-  inline bool substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+  inline bool substitute (LOOKUP_ARGS_DEF) const {
     switch (u.substFormat) {
-    case 1: return u.format1.substitute (LOOKUP_ARGS, property);
+    case 1: return u.format1.substitute (LOOKUP_ARGS);
     default:return false;
     }
   }
@@ -735,21 +734,20 @@
   friend struct SubstLookup;
 
   inline bool substitute (LOOKUP_ARGS_DEF,
-			  unsigned int property,
 			  unsigned int lookup_type) const {
 
     switch (lookup_type) {
-    case GSUB_Single:				return u.single.substitute (LOOKUP_ARGS, property);
-    case GSUB_Multiple:				return u.multiple.substitute (LOOKUP_ARGS, property);
-    case GSUB_Alternate:			return u.alternate.substitute (LOOKUP_ARGS, property);
-    case GSUB_Ligature:				return u.ligature.substitute (LOOKUP_ARGS, property);
-    case GSUB_Context:				return u.context.substitute (LOOKUP_ARGS, property);
+    case GSUB_Single:				return u.single.substitute (LOOKUP_ARGS);
+    case GSUB_Multiple:				return u.multiple.substitute (LOOKUP_ARGS);
+    case GSUB_Alternate:			return u.alternate.substitute (LOOKUP_ARGS);
+    case GSUB_Ligature:				return u.ligature.substitute (LOOKUP_ARGS);
+    case GSUB_Context:				return u.context.substitute (LOOKUP_ARGS);
     /*
-    case GSUB_ChainingContext:			return u.chainingContext.substitute (LOOKUP_ARGS, property);
+    case GSUB_ChainingContext:			return u.chainingContext.substitute (LOOKUP_ARGS);
     */
-    case GSUB_Extension:			return u.extension.substitute (LOOKUP_ARGS, property);
+    case GSUB_Extension:			return u.extension.substitute (LOOKUP_ARGS);
 			/*
-    case GSUB_ReverseChainingContextSingle:	return u.reverseChainingContextSingle.substitute (LOOKUP_ARGS, property);
+    case GSUB_ReverseChainingContextSingle:	return u.reverseChainingContextSingle.substitute (LOOKUP_ARGS);
     */
     default:return false;
     }
@@ -802,25 +800,32 @@
     }
   }
 
-  inline bool substitute_once (hb_ot_layout_t *layout,
-			       hb_buffer_t    *buffer,
-			       unsigned int    context_length,
-			       unsigned int    nesting_level_left) const {
-
+  inline bool substitute_subtables (hb_ot_layout_t *layout,
+				    hb_buffer_t    *buffer,
+				    unsigned int    context_length,
+				    unsigned int    nesting_level_left,
+				    unsigned int    property) const {
     unsigned int lookup_type = get_type ();
     unsigned int lookup_flag = get_flag ();
 
+    for (unsigned int i = 0; i < get_subtable_count (); i++)
+      if (get_subtable (i).substitute (LOOKUP_ARGS,
+				       lookup_type))
+	return true;
+
+    return false;
+  }
+
+  inline bool substitute_once (hb_ot_layout_t *layout,
+			       hb_buffer_t    *buffer) const {
+
+    unsigned int lookup_flag = get_flag ();
+
     unsigned int property;
     if (!_hb_ot_layout_check_glyph_property (layout, IN_CURITEM (), lookup_flag, &property))
       return false;
 
-    for (unsigned int i = 0; i < get_subtable_count (); i++)
-      if (get_subtable (i).substitute (LOOKUP_ARGS,
-				       property,
-				       lookup_type))
-	return true;
-
-    return false;
+    return substitute_subtables (layout, buffer, NO_CONTEXT, MAX_NESTING_LEVEL, property);
   }
 
   bool substitute_string (hb_ot_layout_t *layout,
@@ -837,7 +842,7 @@
 	while (buffer->in_pos < buffer->in_length) {
 
 	  if ((~IN_PROPERTIES (buffer->in_pos) & mask) &&
-	      substitute_once (layout, buffer, NO_CONTEXT, MAX_NESTING_LEVEL))
+	      substitute_once (layout, buffer))
 	    ret = true;
 	  else
 	    _hb_buffer_next_glyph (buffer);
@@ -853,7 +858,7 @@
 	do {
 
 	  if ((~IN_PROPERTIES (buffer->in_pos) & mask) &&
-	      substitute_once (layout, buffer, NO_CONTEXT, MAX_NESTING_LEVEL))
+	      substitute_once (layout, buffer))
 	    ret = true;
 	  else
 	    buffer->in_pos--;
@@ -894,11 +899,10 @@
 
 /* Out-of-class implementation for methods chaining */
 
-inline bool ExtensionSubstFormat1::substitute (LOOKUP_ARGS_DEF, unsigned int property) const {
+inline bool ExtensionSubstFormat1::substitute (LOOKUP_ARGS_DEF) const {
   /* XXX either check in sanitize or here that the lookuptype is not 7 again,
    * or we can loop indefinitely. */
   return (*(SubstLookupSubTable *)(((char *) this) + extensionOffset)).substitute (LOOKUP_ARGS,
-										   property,
 										   get_type ());
 }
 
@@ -913,7 +917,7 @@
   if (HB_UNLIKELY (context_length < 1))
     return false;
 
-  return l.substitute_once (layout, buffer, context_length, nesting_level_left);
+  return l.substitute_subtables (layout, buffer, context_length, nesting_level_left, property);
 }
 
 
diff --git a/src/hb-ot-layout-gsubgpos-private.h b/src/hb-ot-layout-gsubgpos-private.h
index 6757720..b537015 100644
--- a/src/hb-ot-layout-gsubgpos-private.h
+++ b/src/hb-ot-layout-gsubgpos-private.h
@@ -35,13 +35,15 @@
 	hb_buffer_t    *buffer, \
 	unsigned int    context_length HB_GNUC_UNUSED, \
 	unsigned int    nesting_level_left HB_GNUC_UNUSED, \
-	unsigned int    lookup_flag
+	unsigned int    lookup_flag, \
+	unsigned int    property HB_GNUC_UNUSED /* propety of first glyph */
 #define LOOKUP_ARGS \
 	layout, \
 	buffer, \
 	context_length, \
 	nesting_level_left, \
-	lookup_flag
+	lookup_flag, \
+	property
 
 
 /* Context lookups */
@@ -83,7 +85,6 @@
 				   ContextLookupContext &context) {
 
   unsigned int i, j;
-  unsigned int property;
   unsigned int count = glyphCount;
 
   if (HB_UNLIKELY (buffer->in_pos + count > buffer->in_length ||
