        (im/with-reporting {:type :specification :string ~name}
          ~@body))))
 
-(s/def ::behavior ::specification)
+(s/def ::behavior (s/cat
+                    :name (s/or :str string? :sym symbol?)
+                    :opts (s/* keyword?)
+                    :body (s/* ::us/any)))
 (s/fdef behavior :args ::behavior)
+
 (defmacro behavior
   "Adds a new string to the list of testing contexts.  May be nested,
    but must occur inside a specification. If the behavior is not machine

   (behavior \"blows up when the moon is full\" ::manual-test)"
  [& args]
  (let [{:keys [name opts body]} (us/conform! ::behavior args)
        typekw (if (contains? opts :manual-test)
                 :manual :behavior)
        prefix (if-cljs &env "cljs.test" "clojure.test")]


(s/def ::specification
  (s/cat
    :name string?
    :opts (s/* keyword?)
    :body (s/* ::us/any)))

