   "Bypasses a specified number of elements in an
   observable sequence and then returns the remaining
   elements."
-  [ob n]
+  [n ob]
   {:pre [(observable? ob) (number? f)]}
   (.take ob f))
 

  [a b]
  {:pre [(observable? a)
         (observable? b)]}
  (letfn [(merge [& args] args)]
    (.zip a b merge)))

(defn concat
  "Concatenates all of the specified observable

(defn filter
  "Filters the elements of an observable sequence
  based on a predicate."
  [f ob]
  {:pre [(observable? ob) (fn? f)]}
  (.filter ob f))

(defn map
  "Apply a function to each element of an observable
  sequence."
  [f ob]
  {:pre [(observable? ob) (fn? f)]}
  (.map ob f))

