          'face 'go-coverage-untracked)
 
         (dolist (range ranges)
-          (overlay-put
-           (make-overlay
-            (go--line-column-to-point
-             (go--covered-start-line range)
-             (go--covered-start-column range))
-            (go--line-column-to-point
-             (go--covered-end-line range)
-             (go--covered-end-column range)))
-           'face (if (go--covered-covered range) 'go-coverage-covered 'go-coverage-uncovered))))
+          (let* ((count (go--covered-count range))
+                 (norm (cond
+                        ((= count 0)
+                         -0.1)
+                        ((= max-count 1)
+                         0.8)
+                        (t
+                         (/ (log count) divisor))))
+                 (n (1+ (floor (* norm 9))))
+                 (face (concat "go-coverage-" (number-to-string n)))
+                 (ov (make-overlay
+                      (go--line-column-to-point
+                       (go--covered-start-line range)
+                       (go--covered-start-column range))
+                      (go--line-column-to-point
+                       (go--covered-end-line range)
+                       (go--covered-end-column range)))))
+
+            (overlay-put ov 'face face)
+            (overlay-put ov 'help-echo (format "Count: %d" count)))))
 
       (display-buffer (current-buffer) 'display-buffer-reuse-window))))
 

  "Coverage color of untracked code."
  :group 'go-cover)

(defface go-coverage-covered
  '((t (:foreground "#2cd495")))
  "Coverage color of covered code."
  :group 'go-cover)

(defface go-coverage-uncovered
  '((t (:foreground "#c00000")))
  "Coverage color of uncovered code."
  :group 'go-cover)


(defvar go-mode-syntax-table
  (let ((st (make-syntax-table)))

              (start-line start-column end-line end-column num count)
              (mapcar 'string-to-number rest)

            (if (> count max-count)
                (setq max-count count))

            (if (and (string= (file-name-nondirectory file) file-name))
                (push
                 (make-go--covered
