   "Remove all overlays."
   (interactive)
   (remove-overlays)
-  (setq emc-cursor-list nil)
-  (setq emc-region-list nil))
+  (setq emc-cursor-list nil))
 
 (defun emc-get-region-mark (region)
   "Return the REGION's mark."

                             res
                           (concat (number-to-string cnt) res)))))))

(defun emc-find-region (pos)
  "Find the region that ends or starts with POS according to its direction."
  (catch 'emc-region-found
    (dolist (region emc-region-list)
      (let ((mark (emc-get-region-mark region))
            (point (emc-get-region-point region))
            (dir (emc-get-region-direction region))
            (start (overlay-start region))
            (end (overlay-end region)))
        (when (or (and (eq dir 1) (eq end (1+ pos)))   ;; TODO abstract out the 1+ for the region end
                  (and (eq dir -1) (eq start pos)))
          (throw 'emc-region-found region))))))

;; (defun emc-refresh-region (region orig)
;;   "Refresh the visual REGION when point moved from ORIG to current location."

        ;; (message "BEFORE-VISUAL %s" (evil-visual-state-p))
        (save-excursion
          (let ((cursor-list nil)
                (visualp (evil-visual-state-p)))
            ;; (message "RUN COMMAND FOR ALL")
            (dolist (cursor emc-cursor-list)
              ;; TODO optimize this loop
              ;; (message "CURSOR %s" cursor)
              (let ((region (emc-get-cursor-region cursor))
                    (overlay (emc-get-cursor-overlay cursor)))
                ;; (message "START %s" start)
                (let ((new-cursor nil))
                  ;; (message "cmd %s" emc-command-info)
                  ;; (message "cursor %s -> %s" cursor new-cursor)
                  ;; (message "region %s -> %s" region new-region)


                  (goto-char (overlay-start overlay))
                  (setq new-cursor (emc-execute-last-command cursor visualp))

                  ;; (message "OLD CURSOR %s NEW CURSOR %s" cursor new-cursor)

                  (when overlay (delete-overlay overlay))
                  (when region (delete-overlay region))

                  (setq new-cursor (emc-put-cursor-overlay
                                    new-cursor (emc-draw-cursor-at-point)))
                  (setq cursor-list (cons new-cursor cursor-list)))))

            (setq emc-cursor-list cursor-list))
          (setq emc-command-info nil)
          ;; (message "AFTER-VISUAL %s" (evil-visual-state-p))
          )))))
