   {:pre  [(not (nil? state))]
    :post [(not (nil? %))]}
   (let [item (get-apply-item state)
-        trans->dir? (comp rc/is-direction-ext? translate-directions)]
+        trans->dir? (comp rc/is-direction? translate-directions)
+        trans->dir-ext? (comp rc/is-direction-ext? translate-directions)]
     (log/info "apply-item" [item keyin])
     (log/info "is-direction?" ((comp rc/is-direction-ext? translate-directions) keyin))
     (rm/first-vec-match [(get item :item/id) keyin]

      [:stick           \>         ] (-> state
                                       (dig-hole)
                                       (rw/assoc-current-state :normal))
      [:flint-axe       trans->dir?] (-> state
                                       (saw (translate-directions keyin) keyin)
                                       (rw/assoc-current-state :normal))
      [:obsidian-axe    trans->dir?] (-> state
                                       (saw (translate-directions keyin) keyin)
                                       (rw/assoc-current-state :normal))
      [:saw             trans->dir?] (-> state
                                       (saw (translate-directions keyin) keyin)
                                       (rw/assoc-current-state :normal))
      [:flint           :*         ] (if-let [item (ri/inventory-hotkey->item state keyin)]

                                         (apply-rock keyin item)
                                         (rw/assoc-current-state :normal))
                                       state)
      [:flint-and-steel trans->dir-ext?] (-> state
                                       (start-fire (translate-directions keyin))
                                       (rw/assoc-current-state :normal))
      [:pen             :*         ] (apply-pen state item)
