Refactor, in a different direction
diff --git a/src/hb-ot-map-private.hh b/src/hb-ot-map-private.hh
index abf96f2..0c05742 100644
--- a/src/hb-ot-map-private.hh
+++ b/src/hb-ot-map-private.hh
@@ -29,7 +29,7 @@
 #ifndef HB_OT_MAP_PRIVATE_HH
 #define HB_OT_MAP_PRIVATE_HH
 
-#include "hb-ot-shape-private.hh"
+#include "hb-buffer-private.hh"
 
 #include "hb-ot-layout.h"
 
@@ -73,7 +73,7 @@
     { return a->index < b->index ? -1 : a->index > b->index ? 1 : 0; }
   };
 
-  HB_INTERNAL void add_lookups (hb_ot_shape_plan_context_t *c,
+  HB_INTERNAL void add_lookups (hb_face_t    *face,
 				unsigned int  table_index,
 				unsigned int  feature_index,
 				hb_mask_t     mask);
@@ -95,7 +95,8 @@
   inline void add_bool_feature (hb_tag_t tag, bool global = true)
   { add_feature (tag, 1, global); }
 
-  HB_INTERNAL void compile (hb_ot_shape_plan_context_t *c);
+  HB_INTERNAL void compile (hb_face_t *face,
+			    hb_segment_properties_t *props);
 
   hb_mask_t get_global_mask (void) const { return global_mask; }
 
@@ -105,14 +106,14 @@
     return map ? map->mask : 0;
   }
 
-  inline void substitute (hb_ot_shape_context_t *c) const {
+  inline void substitute (hb_face_t *face, hb_buffer_t *buffer) const {
     for (unsigned int i = 0; i < lookup_count[0]; i++)
-      hb_ot_layout_substitute_lookup (c->face, c->buffer, lookup_maps[0][i].index, lookup_maps[0][i].mask);
+      hb_ot_layout_substitute_lookup (face, buffer, lookup_maps[0][i].index, lookup_maps[0][i].mask);
   }
 
-  inline void position (hb_ot_shape_context_t *c) const {
+  inline void position (hb_font_t *font, hb_face_t *face, hb_buffer_t *buffer) const {
     for (unsigned int i = 0; i < lookup_count[1]; i++)
-      hb_ot_layout_position_lookup (c->font, c->face, c->buffer, lookup_maps[1][i].index, lookup_maps[1][i].mask);
+      hb_ot_layout_position_lookup (font, face, buffer, lookup_maps[1][i].index, lookup_maps[1][i].mask);
   }
 
   private: