diff --git a/init.el b/init.el
index 4264afbff29974886f5e9ba07621b88dc0c35f99..94b38c1db29bf5f57b7a3e744eebe95122bce9bd 100644
--- a/init.el
+++ b/init.el
@@ -7,8 +7,7 @@
 ;; This file is
 
 ;;; Code:
-;;======================================================================================
-(setq debug-on-error t)
+;; (setq debug-on-error t)
 
 
 (let (
@@ -46,7 +45,7 @@
   (expand-file-name "elpa" user-emacs-directory )
   "Packages install by package-initilize.")
 
-;;; My Functions=======================================================================
+;;; My Functions
 (defun open-init-file()
   "Find and open the init.el."
   (interactive)
@@ -67,7 +66,6 @@
     `(eval-after-load ,feature
        '(progn ,@body))))
 
-;;-----------------------------------------------------------------------
 
 (defun add-to-hook (fun hooks)
   "Add FUN to HOOKS."
@@ -80,7 +78,7 @@
     (add-to-list usr-list list))
   )
 
-;;; Basic=============================================================================
+;;; Basic
 (setq-default make-backup-files nil ;; Don't make a backup file which end with "~"
               visible-bell t ;; Flash the frame to represent a bell
               auto-image-file-mode t
@@ -94,9 +92,8 @@
 
 ;; Set font
 (set-frame-font "Source Code Pro 11" t t)
-;; ===================================================================================
 
-;;; Interface=========================================================================
+;;; Interface
 (when (fboundp 'tool-bar-mode)
   (tool-bar-mode -1))
 (when (fboundp 'set-scroll-bar-mode)
@@ -111,7 +108,7 @@
 ;; use y-n to replace yes-no
 (fset 'yes-or-no-p 'y-or-n-p)
 
-;; Set the mode line.---------------------------------------------------------------
+;; Set the mode line.
 (setq-default mode-line-format ;; set mode line
 	      (list
 	       "%e" ;; print error message
@@ -130,7 +127,7 @@
 (add-hook 'prog-mode-hook 'linum-mode)
 (add-hook 'prog-mode-hook (lambda () (setq truncate-lines t)))
 
-;;; Packages===============================================================================
+;;; Packages
 (require 'package)
 (setq package--init-file-ensured t
       package-enable-at-startup nil
@@ -147,7 +144,6 @@
       (package-refresh-contents)
       (package-install 'use-package))
     )
-;;---------------------------------------------------------------------------------------
 
 ;;; Built-In packages
 (use-package recentf
@@ -170,7 +166,7 @@
   :ensure nil
   :hook (after-init . global-auto-revert-mode))
 
-;;; Completion=============================================================================
+;;; Completion
 (use-package yasnippet
   :ensure t
   :init
@@ -183,17 +179,19 @@
 (use-package yasnippet-snippets
   :ensure t)
 
-(use-package company
-  :ensure t
+(use-package company-mode
+  :ensure company
+  :hook prog-mode
   :config
   (setq company-idle-delay 0.2)
   (setq company-minimum-prefix-length 2)
-  ;;  (setq tab-always-indent 'complete)
-  (add-hook 'prog-mode-hook 'company-mode)
-  ;; (setq-default company-backends (delete 'company-semantic company-backends))
+  (setq tab-always-indent 'complete)
+  ;; (add-hook 'prog-mode-hook 'company-mode)
+  (setq-default company-backends (delete 'company-semantic company-backends))
   (push '(company-semantic :with company-yasnippet) company-backends)
   :diminish company-mode
   )
+
 (use-package company-quickhelp
   :ensure t
   :defer company
@@ -287,7 +285,7 @@
 (add-hook 'after-init-hook 'hide-minor-mode)
 (add-hook 'find-file-hook (lambda () (hide-minor-mode)))
 
-;;; Deft==============================================================================
+;;; Deft
 (use-package deft
   :ensure t
   :config
@@ -296,13 +294,13 @@
 		deft-recursive t
 	       ))
 
-;;; youdao-dict-----------------------------------------------------------------------
+;;; youdao-dict
 (use-package youdao-dictionary
   :ensure t
   :bind (("C-c o y" . 'youdao-dictionary-search-at-point+))
   )
 
-;;; Keybinding========================================================================
+;;; Keybinding
 (use-package evil
   :ensure t)
 (use-package evil-leader
@@ -316,17 +314,12 @@
   :diminish which-key-mode
   )
 (require 'keybindings)
+(require 'prog-common)
+(require 'prog-c-cpp)
+(require 'prog-python)
+(require 'prog-haskell)
+(require 'init-org)
 )
-;;; self-defined packages
-(use-package program
-  :load-path "lisp/program"
-  :hook prog-mode
-  )
-
-(use-package use-org
-  :load-path "lisp/use-org"
-  :hook org-mode)
-
 
 (provide 'init)
 ;;; init.el ends here
diff --git a/lisp/use-org/use-org.el b/lisp/init-org.el
similarity index 76%
rename from lisp/use-org/use-org.el
rename to lisp/init-org.el
index 61fee25cc49ddb45b1b5a25f1b1976b2122a0e7f..b2f6ba231c45921ce008355fce86ab9f1cb04b15 100644
--- a/lisp/use-org/use-org.el
+++ b/lisp/init-org.el
@@ -35,10 +35,32 @@
 (defvar org-user-latex-class
   (list org-ctexart-class org-complex-ctexbook-class org-simple-ctexbook-class))
 
+(use-package org
+  :ensure org
+  :defer t
+  :commands (orgtbl-mode)
+  :init
+  (progn
+    (require 'org))
+  )
+
+(use-package evil-org
+  :ensure evil-org
+  :defer t
+  :hook org-mode
+  :init
+  ;;  (progn
+  ;;    (add-hook 'org-mode-hook `(lambda () ((evil-org-mode)))))
+  )
+
+(use-package gnuplot
+  :ensure gnuplot
+  :defer t)
+
 (defun use-org ()
   "Manage useage of 'org-mode'."
   (interactive)
   (message "Welcome to the world of writting"))
 
-(provide 'use-org)
-;;; use-org ends here
+(provide 'init-org)
+;;; init-org.el ends here
diff --git a/lisp/keybindings.el b/lisp/keybindings.el
index 0e71592e311ab6aae193db7d3ae3b1b3cdd29281..87aaa54d021388357c3130ff207cfd641ac34e6b 100644
--- a/lisp/keybindings.el
+++ b/lisp/keybindings.el
@@ -37,8 +37,12 @@
   "w 2" 'split-window-right
   "w 0" 'delete-window
   "w 1" 'delete-other-windows
-  ;;youdao dict------------------------------
+  ;; youdao dict------------------------------
   "o y" 'youdao-dictionary-search-at-point+
+  ;; flycheck mode
+  "e n" 'flycheck-next-error
+  "e p" 'flycheck-previous-error
+  "e l" 'flycheck-list-errors
   )
 (evil-mode 1)
 
diff --git a/lisp/prog-c-cpp.el b/lisp/prog-c-cpp.el
new file mode 100644
index 0000000000000000000000000000000000000000..cc37a66853885215da4d796dc404b0b7240143d9
--- /dev/null
+++ b/lisp/prog-c-cpp.el
@@ -0,0 +1,13 @@
+
+;;; Code:
+
+(use-package ccls
+  :ensure t
+  :defer t)
+
+(use-package clang-format
+  :ensure t
+  :defer t)
+
+(provide 'prog-c-cpp)
+;;; prog-c-cpp.el ends here
diff --git a/lisp/program/prog-lsp.el b/lisp/prog-common.el
similarity index 88%
rename from lisp/program/prog-lsp.el
rename to lisp/prog-common.el
index 91125e0e39b50eebf5d59945dd4651c522168538..08db86305261b252505bb3a544a5006c6f411431 100644
--- a/lisp/program/prog-lsp.el
+++ b/lisp/prog-common.el
@@ -4,6 +4,8 @@
 
 ;;; Code:
 ;;;
+
+;;; Language server protocol
 (use-package nox
   :load-path "lisp/nox"
   :config
@@ -58,5 +60,10 @@
 (use-package dap-mode
   :ensure t)
 
-(provide 'prog-lsp)
-;;; prog-lsp.el ends here
+;;; Flycheck
+(use-package flycheck-mode
+  :ensure flycheck
+  :hook prog-mode)
+
+(provide 'prog-common)
+;;; prog-common.el ends here
diff --git a/lisp/program/prog-haskell.el b/lisp/prog-haskell.el
similarity index 100%
rename from lisp/program/prog-haskell.el
rename to lisp/prog-haskell.el
diff --git a/lisp/prog-python.el b/lisp/prog-python.el
new file mode 100644
index 0000000000000000000000000000000000000000..908b9e301a8ecc0de3f89698b7e5585eab952dae
--- /dev/null
+++ b/lisp/prog-python.el
@@ -0,0 +1,19 @@
+
+;;; Code:
+
+(use-package importmagic
+  :defer t
+  :ensure t
+  :diminish importmagic-mode
+  :init
+  (progn
+    (add-hook 'python-mode-hook 'importmagic-mode)
+    ))
+
+(use-package pipenv
+  :defer t
+  :ensure t
+  )
+
+(provide 'prog-python)
+;;; prog-python.el ends here
diff --git a/lisp/program/prog-c-cpp.el b/lisp/program/prog-c-cpp.el
deleted file mode 100644
index df4c9e639c240365ec334b123ab5ee858859831c..0000000000000000000000000000000000000000
--- a/lisp/program/prog-c-cpp.el
+++ /dev/null
@@ -1,7 +0,0 @@
-
-;;; Code:
-
-
-
-(provide 'prog-c-cpp)
-;;; prog-c-cpp.el ends here
diff --git a/lisp/program/prog-python.el b/lisp/program/prog-python.el
deleted file mode 100644
index 74784b46c09690e8ffd7db260fd7eb4d9aee2a49..0000000000000000000000000000000000000000
--- a/lisp/program/prog-python.el
+++ /dev/null
@@ -1,5 +0,0 @@
-
-;;; Code:
-
-(provide 'prog-python)
-;;; prog-python.el ends here
diff --git a/lisp/program/program.el b/lisp/program/program.el
deleted file mode 100644
index 5c1b4b6f8bd5699cf1b8135efa57d47fe52aa0cc..0000000000000000000000000000000000000000
--- a/lisp/program/program.el
+++ /dev/null
@@ -1,24 +0,0 @@
-;; program.el --- initilize file for emacs programming
-
-;;; Commentary:
-
-;;; Code:
-
-;; Flycheck
-(use-package flycheck-mode
-  :ensure flycheck
-  :hook prog-mode)
-;; hs-minor-mode
-
-(require 'prog-c-cpp)
-(require 'prog-python)
-(require 'prog-haskell)
-(require 'prog-lsp)
-
-(defun program ()
-  "Manage programming issues for Emacs."
-  (interactive)
-  )
-
-(provide 'program)
-;;; program.el ends here