     [:session (:session @driver) :buttondown]
     nil _))
 
-(defmulti mouse-btn-up dispatch-driver)
+(defmulti mouse-btn-up
+  "Puts up a button of a virtual mouse."
+  dispatch-driver)
 
 (defmethods mouse-btn-up [:chrome :phantom :safari]
   [driver]

       (finally
         (mouse-btn-up ~driver)))))

(defn drag-and-drop [driver q-from q-to]
  (mouse-move-to driver q-from)
  (with-mouse-btn driver
    (mouse-move-to driver q-to)))

     [:session (:session @driver) :moveto]
     {:xoffset x :yoffset y} _)))

(defmacro with-mouse-btn
  "Performs the body keeping mouse botton pressed."
  [driver & body]
  `(do
     (mouse-btn-down ~driver)
     (try
