Incremental
diff --git a/pyotlss.py b/pyotlss.py
index 0dcbbc0..243d990 100755
--- a/pyotlss.py
+++ b/pyotlss.py
@@ -374,18 +374,23 @@
 
 @add_method(fontTools.ttLib.tables.otTables.ChainContextSubst, fontTools.ttLib.tables.otTables.ChainContextPos)
 def subset_glyphs (self, glyphs):
+	c = self.__classify_context ()
+
 	if self.Format == 1:
-		# XXX De-"Sub" it
 		indices = self.Coverage.subset_glyphs (glyphs)
-		self.ChainSubRuleSet = [self.ChainSubRuleSet[i] for i in indices]
-		self.ChainSubRuleSetCount = len (self.ChainSubRuleSet)
-		for rs in self.ChainSubRuleSet:
-			rs.ChainSubRule = [r for r in rs.ChainSubRule
-					   if all (g in glyphs for g in r.Backtrack + r.Input + r.LookAhead)]
-			rs.ChainSubRuleCount = len (rs.ChainSubRule)
-		# XXX Needs more work
+		rss = getattr (self, c.RuleSet)
+		rss = [rss[i] for i in indices]
+		for rs in rss:
+			ss = getattr (rs, c.Rule)
+			ss = [r for r in ss \
+			      if all (g in glyphs for g in r.Backtrack + r.Input + r.LookAhead)]
+			setattr (rs, c.Rule, ss)
+			setattr (rs, c.RuleCount, len (ss))
+			# XXX Needs more work
 		# TODO Prune empty subrulesets
-		return self.ChainSubRuleSetCount
+		setattr (self, c.RuleSet, rss)
+		setattr (self, c.RuleSetCount, len (rss))
+		return bool (rss)
 	elif self.Format == 2:
 		# XXX Needs more work
 		return self.Coverage.subset_glyphs (glyphs) and \