   (is (s/valid? ::search-term [:= "artist" "Lou Reed"]))
   (is (s/valid? ::search-term [:shuffle "Manic Thursday"])))
 
+(defn search-term-as-js-obj [term]
+  (let [json-term (apply vector "and" term)]
+    (clj->js json-term)))
+
+(s/fdef search-term-as-js-obj
+        :args (s/cat :term (s/coll-of ::search-term))
+        :ret string?)
+
+(deftest search-term-test
+  (is (thrown? js/Error
+               (search-term-as-js-obj [[:fgh 7 "artist" "Queen"]])))
+  (is (= (js->clj (search-term-as-js-obj [[:like "artist" "Queen"]]))
+         ["and"  ["like" "artist" "Queen"]])))
+
 (defn xhr-search [term]
-  (let [conformed-term (s/conform (s/coll-of ::search-term) term)
-        json-term (apply vector "and" conformed-term)
-        body (.stringify js/JSON (clj->js json-term))
-        channel (chan)]
+  (let [channel (chan)]
     (.send XhrIo "/tracks.json"
            (fn [e]
              (let [xhr (.-target e)

    (swap! app-state assoc-in [:player :want-play] true)))

(.addEventListener js/window "load" init)
(cljs.test/run-tests)

     (.canPlayType player
                   (if codec (str media-type "; codecs=" codec) media-type))))

(defn best-media-url [r]
  (let [urls (get r "_links")]
    (get
