   hierarchy/HighLevelAction (immediate-refinements- [s]
                              (if (= dst (env/get-var s [:base]))
                                [[]]
-                               (for [dir dirs] [(make-base-dir s dir) this])))
+                               (for [dir dirs :let [a (make-base-dir s dir)] :when a]
+                                 [a this])))
                             (cycle-level- [s] 1)))
 ; manhattan
 ; pess? SLD? (try direct line, if occ then -inf).

                              (primitive? [] false)
    env/ContextualAction      (precondition-context [s] (reach-context s))
    hierarchy/HighLevelAction (immediate-refinements- [s]
                                (if (= dst-go (env/get-var s [:gripper-pos]))
                                    [[]]
                                  (for [dir dirs] [(make-gripper-dir s dir) this])))
                              (cycle-level- [s] 1)))
; manhattan, SLD?  range?


                              (conj (reach-context s o-dst) [:holding]))
  hierarchy/HighLevelAction (immediate-refinements- [s]
                             (let [const (env/get-var s :const)
                                   base  (env/get-var s [:base])
                                   free  (get const [:freespace])]
                               (for [dst (->> (get const [:base-offsets])
                                              (map #(add-pos % o-dst))
                                              (filter free)
                                              (move-to-front base)
                                              (take (get const [:n-base-samples])))]
                                 [(make-move-base-hla env dst) (make-drop-at-hla env o o-dst)])))
                            (cycle-level- [s] nil)))


(defn make-go-drop-hla [env o] 
 (reify :as this
