                (f-file-p fpath))
       (danny--choose-action fpath))))
 
+(defun danny--move-file (src-fpath dst-dpath)
+  (let ((dst-fpath (f-join dst-dpath
+                           (danny--read-string (format "Save as (%s): " (f-filename src-fpath))
+                                               (f-filename src-fpath)
+                                               20))))
+    (when (equal src-fpath dst-fpath)
+      (error "Moving to same location"))
+    (if (f-exists-p dst-fpath)
+        (progn
+          (unless (danny--y-or-n (format "Override? %s\n" dst-fpath))
+            (error "Aborted"))
+          (rename-file src-fpath dst-fpath t)
+          (danny--add-destination-dir dst-dpath))
+      (rename-file src-fpath dst-fpath t)
+      (danny--add-destination-dir dst-dpath))))
+
 (defun danny--create-move-action-fun (src-fpath)
   (lambda (dst-dpath)
-    (let ((dst-fpath (f-join dst-dpath
-                             (danny--read-string (format "Save as (%s): " (f-filename src-fpath))
-                                                 (f-filename src-fpath)
-                                                 20))))
-      (when (equal src-fpath dst-fpath)
-        (error "Moving to same location"))
-      (if (f-exists-p dst-fpath)
-          (progn
-            (unless (danny--y-or-n (format "Override? %s\n" dst-fpath))
-              (error "Aborted"))
-            (rename-file src-fpath dst-fpath t)
-            (danny--add-destination-dir dst-dpath))
-        (rename-file src-fpath dst-fpath t)
-        (danny--add-destination-dir dst-dpath)))))
+    (danny--move-file src-fpath dst-dpath)))
 
 (defun danny--create-open-action-fun (file-path)
   (lambda (ignored)

                                                                                :initial-input ivy-text))))
    (with-current-buffer (get-buffer-create "*danny*")
      (let* ((collection (funcall (danny--framed-ivy-source-collection source)
                                              nil nil nil))
             (lines-count (+ (length (s-split "\n" (danny--framed-ivy-source-prompt source)))
                             (length collection)))
             (frame (make-frame

   (list
    (make-danny--framed-ivy-source :prompt (format "Action on (%s): " (f-filename fpath))
                                   :collection (lambda (str pred v)
                                                 (-concat (list (cons "Open" (lambda ()
                                                                               (unless (f-exists-p fpath)
                                                                                 (error "File not found: %s" fpath))
                                                                               (find-file fpath)))
                                                                (cons "Move..." (lambda ()
                                                                                  (danny--handle-file-created fpath))))
                                                          (-map
                                                           (lambda (destination)
                                                             (cons (format "Move to %s" destination)
                                                                   (lambda ()
                                                                     (danny--move-file (f-filename fpath) destination))))
                                                           (danny--last-destinations))))
                                   :action (lambda (item)
                                             (funcall (cdr item)))
                                   :unwind (lambda ()
                                             (delete-frame)
                                             (kill-buffer "*danny*")
