   :preface
   ;; hook to run when org-mode is started, to turn on certain modes etc.
   (defun gp/org-mode-hook ()
-    ;;set variable pitch font for org, but keep fixed width for code etc.
-    ;;(variable-pitch-mode t)
-
     ;; disable linum
     (linum-mode -1)
 
     ;; enable on the fly spell checking
-    (flyspell-mode 1))
+    (flyspell-mode 1)
+
+    ;; center the text area and set a minimal fringe
+    (olivetti-mode)
+    (olivetti-set-width 120)
+    (fringe-mode 2))
+  :hook (org-mode . gp/org-mode-hook)
   :init
-  (use-package ox-tufte
-    :defer t)
-  (use-package ox-gfm
-    :defer t)
-  (use-package org-gcal)
+  (setq org-directory "~/Documents/Dropbox/org")
+  (setq org-default-notes-file (expand-file-name "dump.org" org-directory))
+  (setq org-startup-with-inline-images t)
   :config
   (progn
-    (require 'ox-md)
-    (require 'ox-gfm)
-    (require 'ox-html)
-    (require 'ox-tufte)
-    (require 'org-protocol)
-
     ;; This functionality isn't in a package yet.
     ;; I installed it into ~/.emacs.d/site-lisp with wget https://raw.githubusercontent.com/alphapapa/org-protocol-capture-html/master/org-protocol-capture-html.el
-    (require 'org-protocol-capture-html)
-    
-    (add-hook 'org-mode-hook 'gp/org-mode-hook)
+    ;; (require 'org-protocol-capture-html)
     
     ;; configuration
-    (setq org-directory "~/Documents/Dropbox/org")
-    (setq cal-directory "~/Documents/Dropbox/org/calendars")
-    
-    (setq line-spacing 3)
-    (setq org-startup-with-inline-images t)
+
+    ;;
+    ;; General Config
+    ;;
+    ;; actually emphasise text (e.g. show as italic instead of /italic/)
+    (setq org-hide-emphasis-markers t)
+
+    ;; syntax highlight code blocks
+    (setq org-src-fontify-natively t)
+
+    ;; replace list indicators with bullet points
+    (font-lock-add-keywords 'org-mode
+                            '(("^ +\\([-*]\\) "
+                               (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))
     
     ;;
     ;; Agenda config

    ;; All the agenda/capture/refile stuff is heavily influenced by http://doc.norang.ca/org-mode.html
    (setq org-agenda-window-setup (quote current-window))
    (setq org-agenda-files (list (expand-file-name "todo.org" org-directory)
                                 (expand-file-name "refile.org" org-directory)
                                 (expand-file-name "projects/" org-directory)
                                 (expand-file-name "projects/work/" org-directory)
                                 (expand-file-name "projects/personal/" org-directory)
                                 (expand-file-name "personal_schedule.org" org-directory)
                                 (expand-file-name "calendars/" org-directory)))

    ;; org-gcal config
    (setq
     org-gcal-client-id "603475159806-f87h1knp429dkbqei98f8csk68fo2f7n.apps.googleusercontent.com"
     org-gcal-client-secret "AnnpgXKHwUIMyyqrNSsW2liG"
     org-gcal-file-alist '(("giles@vurt.co.uk" .
                            "~/Documents/Dropbox/org/calendars/personal.org")
                           ("jj55h065t2qkbiu351jirv09kk@group.calendar.google.com" .
                            "~/Documents/Dropbox/org/calendars/oliver.org")
                           ("7ahnde9usu8cj8ni2c7idtrq48@group.calendar.google.com" .
                            "~/Documents/Dropbox/org/calendars/house.org")))

    (add-hook 'org-agenda-mode-hook (lambda () (org-gcal-sync) ))
    (add-hook 'org-capture-after-finalize-hook (lambda () (org-gcal-sync) ))
    
    (add-hook 'org-mode-hook 'turn-on-auto-fill)
    
    (setq org-todo-keywords '((sequence "TODO(t)" "NEXT(n)" "STARTED(s)" "|" "DONE(d)")
                              (sequence "WAITING(w@/!)" "DEFERRED(e)" "|" "CANCELLED(c@/!)" "MEETING")))
    (setq org-todo-keyword-faces
          (quote
           (("DONE" . success)
            ("STARTED" . underline)
            ("WAITING" . warning)
            ("TODO" . error)
            ("NEXT" . highlight)
            ("DEFERRED" . default)
            ("CANCELLED" . default)
            ("MEETING" . diary))))

    ;; allow changing from any task todo state to another by selecting appropriate key from the menu
    ;; C-c C-t KEY

    ;; set appropriate tags on tasks (used for filtering)
    (setq org-todo-state-tags-triggers
          '(("CANCELLED" ("CANCELLED" . t))
            ("BLOCKED" ("WAITING" . t))
            (done ("WAITING"))
            ("TODO" ("WAITING") ("CANCELLED"))
            ("DONE" ("WAITING") ("CANCELLED"))))
    
    (setq org-capture-templates
          '(("t" "Todo"
             entry (file+headline "todo.org" "Things to do")
             "* TODO %?")
            ("m" "Multi-part Todo"
             entry (file+headline "todo.org" "Things to do")
             "* TODO %? [/]\n- [ ] ")
            ("n" "Note"
             entry (file+headline "dump.org" "Notes")
             "* %? :NOTE:\n%U\n")))

    ;;
    ;; Refile config
