diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,4 +8,4 @@
 must be an instance of the `Diff` typeclass (see `app/Main.hs` for an example).
 
 
-
+Available on [![Hackage](https://img.shields.io/badge/Hackage-v0.1.0.2-blue.svg)](http://hackage.haskell.org/package/rewrite-inspector)
diff --git a/rewrite-inspector.cabal b/rewrite-inspector.cabal
--- a/rewrite-inspector.cabal
+++ b/rewrite-inspector.cabal
@@ -1,5 +1,5 @@
 name: rewrite-inspector
-version: 0.1.0.2
+version: 0.1.0.3
 cabal-version: >=1.10
 build-type: Simple
 license: BSD3
diff --git a/src/BrickUI.hs b/src/BrickUI.hs
--- a/src/BrickUI.hs
+++ b/src/BrickUI.hs
@@ -32,7 +32,7 @@
 -- | Entry point.
 runTerminal :: forall term. Diff term => FilePath -> IO ()
 runTerminal ftheme = do
-  res <- loadCustomizations ftheme (defaultTheme $ annStyles @term)
+  res <- loadCustomizations ftheme (defaultTheme $ userStyles @term)
   case res of
     Left err ->
       error $ "[theme.ini] Configuration file is malformed: " ++ err
diff --git a/src/Gen.hs b/src/Gen.hs
--- a/src/Gen.hs
+++ b/src/Gen.hs
@@ -18,7 +18,27 @@
 
 import qualified Graphics.Vty as V
 
--------------------------------
+--------------------------------------------------
+-- Syntactic annotations used for highlighting.
+
+data Syntax
+  = Type           -- ^ type information
+  | Keyword        -- ^ standard keywords of the language
+  | Literal        -- ^ literal values (e.g. strings, numbers)
+  | Unique         -- ^ unique identifiers
+  | Qualifier      -- ^ qualifiers for modules
+  | Custom String  -- ^ used for user-supplied styling
+
+instance Show Syntax where
+  show = \case
+    Type      -> "type"
+    Keyword   -> "keyword"
+    Literal   -> "literal"
+    Unique    -> "unique"
+    Qualifier -> "qualifier"
+    Custom s  -> s
+
+--------------------------------------------------
 -- Generic interface.
 
 class Eq (Ctx term) => Diff term where
@@ -38,13 +58,13 @@
   topEntity :: String
   topEntity = "top"
 
-  handleAnn :: Ann term -> Either String (Ctx term)
+  handleAnn :: Ann term -> Either Syntax (Ctx term)
 
-  default handleAnn :: Ann term ~ Ctx term => Ann term -> Either String (Ctx term)
+  default handleAnn :: Ann term ~ Ctx term => Ann term -> Either Syntax (Ctx term)
   handleAnn = Right
 
-  annStyles :: [(String, V.Attr)]
-  annStyles = []
+  userStyles :: [(String, V.Attr)]
+  userStyles = []
 
   initOptions :: Options term
 
@@ -61,8 +81,7 @@
 
   patch :: term -> [Ctx term] -> term -> term
 
-
---------------------------------
+--------------------------------------------------
 -- History datatype.
 
 type History term ctx = [HStep term ctx]
diff --git a/src/Pretty.hs b/src/Pretty.hs
--- a/src/Pretty.hs
+++ b/src/Pretty.hs
@@ -49,6 +49,11 @@
   . ppr' @term opts
 
 -- Convert a stream into our simpler data type.
+data MyDoc = MChar Char
+           | MString String
+           | MLine Int
+           | MMod [String] MyDoc
+
 data Item = Stx | Ctx
 
 myForm :: forall term. Diff term
@@ -61,7 +66,7 @@
   SText _ s rest  -> mark (MString (unpack s)) : continueWith rest
   SLine i rest    -> MLine i                   : continueWith rest
   SAnnPush a rest -> case handleAnn @term a of
-    Left  s -> myForm @term ctx0 ctx' (Stx:stack) (s:attrs) rest
+    Left  s -> myForm @term ctx0 ctx' (Stx:stack) (show s:attrs) rest
     Right c -> myForm @term ctx0 (ctx' ++ [c]) (Ctx:stack) attrs rest
   SAnnPop rest -> case top of
     Stx -> myForm @term ctx0 ctx' stack' (tail attrs) rest
@@ -70,11 +75,6 @@
   where continueWith = myForm @term ctx0 ctx' stack attrs
         mark = MMod $ ["focus" | ctx0 `isPrefixOf` ctx'] ++ attrs
 
-data MyDoc = MChar Char
-           | MString String
-           | MLine Int
-           | MMod [String] MyDoc
-
 -- Split into individual lines (of some indendation).
 split :: [MyDoc] -> [(Int, [MyDoc])]
 split []             = []
@@ -96,7 +96,7 @@
 -- UI Styling.
 
 defaultTheme :: [(String, V.Attr)] -> Bt.Theme
-defaultTheme userStyles = Bt.newTheme V.defAttr $
+defaultTheme userTheme = Bt.newTheme V.defAttr $
   [ ("focus",      B.bg $ V.rgbColor 47 79 79)
   , ("title",      V.defAttr `V.withStyle` V.bold)
   , ("emph",       V.defAttr `V.withStyle` V.bold)
@@ -106,7 +106,13 @@
   , (E.editFocusedAttr,       V.black `B.on` V.yellow)
   , (Bf.invalidFormInputAttr, V.white `B.on` V.red)
   , (Bf.focusedFormInputAttr, V.black `B.on` V.yellow)
-  ] ++ map (\(s, a) -> (B.attrName s, a)) userStyles
+    -- syntax highlighting
+  , ("type",      V.defAttr `V.withForeColor` V.brightYellow)
+  , ("keyword",   V.defAttr `V.withForeColor` V.rgbColor 255 165 0)
+  , ("literal",   V.defAttr `V.withForeColor` V.brightCyan)
+  , ("unique",    V.defAttr `V.withStyle` V.dim)
+  , ("qualifier", V.defAttr `V.withStyle` V.italic)
+  ] ++ map (\(s, a) -> (B.attrName s, a)) userTheme
 
 modify :: Bool -> [String] -> Widget n -> Widget n
 modify scroll = foldr (.) id . fmap mod1 . sortOn (\case "Type" -> 1; _ -> 0)
