    #?(:cljs [babel.logjs :as log]) 
    [clojure.core.cache :as cache]
    [dag_unify.core :refer (fail? get-in remove-matching-keys unifyc)]))
+
+(def index-lexicon-on-paths
+  [[:synsem :cat]
+   [:synsem :aux]
+   [:synsem :sem :pred]])
 
 (declare cache)
 

     :morph fo
     :morph-ps fo-ps
     :lexical-cache (atom (cache/fifo-cache-factory {} :threshold 1024))
     :lexicon lexicon

     :aux2lex
     (map-subset-by-path lexicon [:synsem :aux])

     :infl2lex
     (map-subset-by-path lexicon [:synsem :infl])

     :pred2lex ;; map:<pred => subset of lexicon with that pred>
     (map-subset-by-path lexicon [:synsem :sem :pred])

     :cat2lex ;; map:<cat => subset of lexicon with that cat>
     (map-subset-by-path lexicon [:synsem :cat])}))

(defn np-grammar []
  (let [grammar

  (:require 
   [babel.english.lexicon :refer [lexicon]]
   [babel.english.morphology :refer (analyze fo)]
   [babel.index :refer [create-indices lookup-spec]]
   [babel.over :refer (over)]
   [babel.parse :as parse]
   [babel.ug :refer [comp-modifies-head
