 
           ;; Active top-down var -- add actions
           (util/find-first #(not (env/get-var s (free-var %))) (map second na-tuples))  
-            (apply concat (vals (util/safe-get-in dtgs [x (env/get-var s x)])))
+            (for [as (vals (util/safe-get-in dtgs [x (env/get-var s x)])), a as]
+              (make-add-action-action a))
 
           ;; Inactive top-down var -- activate it
           (first (map second na-tuples))

          (util/find-first (fn [[pv cv]] (env/get-var s (parent-var pv cv))) aa-parent-edges)
            (let [[pv cv] x, 
                  p-val (env/get-var s pv)
                  d-val (util/safe-get-in (env/get-var s (action-var cv)) [:precond-map pv])]
              (apply concat (map (get-in dtgs [pv p-val]) (acyclic-succ-fn pv p-val d-val))))

          ;; Inactive bottom-up var -- needs to be assigned.  
          (first aa-parent-edges)

       [[(action-var sas/goal-var-name) goal-action]
        [(free-var sas/goal-var-name) false]]))))

(def *add-count* (util/sref 0))

(defn make-add-action-action [{:keys [name precond-map effect-map reward] :as factored-primitive}]
  (util/sref-set! *add-count* (inc (util/sref-get *add-count*)))
  (let [[evar eval] (util/safe-singleton (seq effect-map))]
    (env/FactoredPrimitive
     [::AddAction name]
