   (shell-command (concat  "git clone " (vendle:package-url package) " "
                           (vendle:concat-path vendle-directory (vendle:package-name package)))
                  vendle-directory)
-  (byte-recompile-directory (vendle:package-path package)  0))
+  (vendle:compile package (vendle:package-path package)))
 
 ;;;; check
-(cl-defun vendle:check ()
+(cl-defun vendle:check-packages ()
   (cl-mapc
    (lambda (package)
      (vendle:install-package package))
    *vendle-package-list*))
-
 
 ;;;; register
 

(require 'vendle-source-git "vendle/source/git")
(require 'vendle-package "vendle/package")

;;; internal functions

(cl-defun vendle:directory-git-p (p)
  (if (file-directory-p (expand-file-name ".git" p))

;;;; clean
(cl-defun vendle:clean-packages ()
  (cl-letf ((paths (cl-remove-if
                    (lambda (dir)
                      (vendle:search-registered dir 'path))
                    (directory-files vendle-directory 'absolute (rx (not (any ".")))))))
    (if paths
        (cl-mapc
         (lambda (p)
           (message "vendle: clean %s" p)
           (delete-directory p t))
         paths))))

;;;; commands

;;;###autoload
(cl-defun vendle-check ()
  "Install packages using `vendle:install-packages'"
  (interactive)
  (vendle:check-packages))

;;;###autoload
(cl-defun vendle-update ()
  (interactive)
  (vendle:update-packages)
  (vendle:message "package update finished."))

;;;###autoload
(cl-defun vendle-clean ()
  (interactive)
  (vendle:clean-packages))

;;;; font-lock
(cl-defun vendle:turn-on-font-lock ()
  (cl-flet ((add-keywords (face-name keyword-rules)
                          (cl-letf* ((keyword-list (cl-mapcar (lambda (x)
