         (send-off a exec-test))
       @p)
     (map deref test-agents)))
+
+(defn suites [tests]
+  (reduce (fn [suites test]
+            (if (str/blank? (:suite test))
+              (update suites (dec (count suites)) update :tests conj test)
+              (conj suites {:name (:suite test) :tests [test]})))  [] tests))
 
 (defn summarise-results [tests]
   (let [result-keys {:error 0 :failure 0 :success 0 :skipped 0 :ignored 0 :total 0}

                        nil)])])])
              out))))

(defn- to-opts [args]
  (apply hash-map (map-indexed #(if (even? %1) (subs %2 1) %2) args)))


                          (if (every? (comp :done deref) deps)
                            (assoc
                             (cond
                               (and skip-tag (= skip-tag skip)) (assoc test :ignored "skip requested")
                               (true? ignore) (assoc test :ignored "ignored")
                               (every? (comp :success deref) deps)
                               (try
