diff --git a/dist/build/hkt/hkt-tmp/HOpenPGP/Tools/Lexer.hs b/dist/build/hkt/hkt-tmp/HOpenPGP/Tools/Lexer.hs
--- a/dist/build/hkt/hkt-tmp/HOpenPGP/Tools/Lexer.hs
+++ b/dist/build/hkt/hkt-tmp/HOpenPGP/Tools/Lexer.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-missing-signatures #-}
 {-# LANGUAGE CPP,MagicHash #-}
 {-# LINE 1 "HOpenPGP/Tools/Lexer.x" #-}
 
@@ -29,11 +30,9 @@
 #endif
 #if __GLASGOW_HASKELL__ >= 503
 import Data.Array
-import Data.Char (ord)
 import Data.Array.Base (unsafeAt)
 #else
 import Array
-import Char (ord)
 #endif
 #if __GLASGOW_HASKELL__ >= 503
 import GHC.Exts
@@ -44,7 +43,7 @@
 {-# LINE 1 "templates/wrappers.hs" #-}
 {-# LINE 1 "<built-in>" #-}
 {-# LINE 1 "<command-line>" #-}
-{-# LINE 8 "<command-line>" #-}
+{-# LINE 9 "<command-line>" #-}
 # 1 "/usr/include/stdc-predef.h" 1 3 4
 
 # 17 "/usr/include/stdc-predef.h" 3 4
@@ -90,7 +89,26 @@
 
 
 
-{-# LINE 8 "<command-line>" #-}
+{-# LINE 9 "<command-line>" #-}
+{-# LINE 1 "/usr/lib/ghc/include/ghcversion.h" #-}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 9 "<command-line>" #-}
 {-# LINE 1 "templates/wrappers.hs" #-}
 -- -----------------------------------------------------------------------------
 -- Alex wrapper code.
@@ -99,9 +117,12 @@
 -- it for any purpose whatsoever.
 
 import Control.Applicative (Applicative (..))
+import qualified Control.Monad (ap)
 import Data.Word (Word8)
-{-# LINE 23 "templates/wrappers.hs" #-}
+import Data.Int (Int64)
+{-# LINE 25 "templates/wrappers.hs" #-}
 
+import Data.Char (ord)
 import qualified Data.Bits
 
 -- | Encode a Haskell String to a list of Word8 values, in UTF8 format.
@@ -152,11 +173,11 @@
                               in p' `seq`  Just (b, (p', c, bs, s))
 
 
-{-# LINE 93 "templates/wrappers.hs" #-}
+{-# LINE 98 "templates/wrappers.hs" #-}
 
-{-# LINE 107 "templates/wrappers.hs" #-}
+{-# LINE 116 "templates/wrappers.hs" #-}
 
-{-# LINE 122 "templates/wrappers.hs" #-}
+{-# LINE 134 "templates/wrappers.hs" #-}
 
 -- -----------------------------------------------------------------------------
 -- Token positions
@@ -176,7 +197,7 @@
 alexStartPos = AlexPn 0 1 1
 
 alexMove :: AlexPosn -> Char -> AlexPosn
-alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (((c+7) `div` 8)*8+1)
+alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (((c+alex_tab_size-1) `div` alex_tab_size)*alex_tab_size+1)
 alexMove (AlexPn a l c) '\n' = AlexPn (a+1) (l+1)   1
 alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)
 
@@ -296,21 +317,21 @@
 -- -----------------------------------------------------------------------------
 -- Monad (with ByteString input)
 
-{-# LINE 347 "templates/wrappers.hs" #-}
+{-# LINE 371 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Basic wrapper
 
-{-# LINE 374 "templates/wrappers.hs" #-}
+{-# LINE 398 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Basic wrapper, ByteString version
 
-{-# LINE 392 "templates/wrappers.hs" #-}
+{-# LINE 418 "templates/wrappers.hs" #-}
 
-{-# LINE 406 "templates/wrappers.hs" #-}
+{-# LINE 434 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -318,13 +339,13 @@
 
 -- Adds text positions to the basic model.
 
-{-# LINE 423 "templates/wrappers.hs" #-}
+{-# LINE 451 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Posn wrapper, ByteString version
 
-{-# LINE 438 "templates/wrappers.hs" #-}
+{-# LINE 467 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -332,6 +353,8 @@
 
 -- For compatibility with previous versions of Alex, and because we can.
 
+alex_tab_size :: Int
+alex_tab_size = 8
 alex_base :: AlexAddr
 alex_base = AlexA# "\xf8\xff\xff\xff\x8d\xff\xff\xff\xa2\xff\xff\xff\x8f\xff\xff\xff\xa3\xff\xff\xff\x96\xff\xff\xff\x98\xff\xff\xff\xa7\xff\xff\xff\x9e\xff\xff\xff\x9f\xff\xff\xff\xa0\xff\xff\xff\xd1\xff\xff\xff\xd2\xff\xff\xff\xd6\xff\xff\xff\x97\xff\xff\xff\xac\xff\xff\xff\xad\xff\xff\xff\xae\xff\xff\xff\x9d\xff\xff\xff\xb2\xff\xff\xff\xb4\xff\xff\xff\xb5\xff\xff\xff\xb6\xff\xff\xff\xe9\xff\xff\xff\xf1\xff\xff\xff\xc5\xff\xff\xff\xba\xff\xff\xff\xb8\xff\xff\xff\xc0\xff\xff\xff\xe0\xff\xff\xff\xd3\xff\xff\xff\xd5\xff\xff\xff\xdf\xff\xff\xff\xe7\xff\xff\xff\xe8\xff\xff\xff\x0e\x00\x00\x00\xe6\xff\xff\xff\xea\xff\xff\xff\xeb\xff\xff\xff\xec\xff\xff\xff\xed\xff\xff\xff\xef\xff\xff\xff\xf9\xff\xff\xff\x05\x00\x00\x00\x0f\x00\x00\x00\x20\x00\x00\x00\x38\x00\x00\x00\x02\x00\x00\x00\x1f\x00\x00\x00\x0d\x00\x00\x00\x08\x00\x00\x00\x13\x00\x00\x00\x0c\x00\x00\x00\x10\x00\x00\x00\x11\x00\x00\x00\xfd\xff\xff\xff\x0b\x00\x00\x00\x1a\x00\x00\x00\x17\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x1b\x00\x00\x00\x1d\x00\x00\x00\x2c\x00\x00\x00\x31\x00\x00\x00\x3a\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x5a\x00\x00\x00\x43\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x2e\x00\x00\x00\x2a\x00\x00\x00\x1c\x00\x00\x00\x2d\x00\x00\x00\x21\x00\x00\x00\x2f\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xec\x00\x00\x00\xed\x00\x00\x00\xee\x00\x00\x00\xef\x00\x00\x00\x39\x00\x00\x00\xf0\x00\x00\x00\xf1\x00\x00\x00\xf2\x00\x00\x00\xf3\x00\x00\x00\x30\x00\x00\x00\x35\x00\x00\x00\xf6\x00\x00\x00\x3b\x00\x00\x00\xe4\x00\x00\x00\x3c\x00\x00\x00\x41\x00\x00\x00\x99\x01\x00\x00\x9a\x01\x00\x00\xe6\x00\x00\x00\xeb\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x4a\x00\x00\x00\xd3\x00\x00\x00\xca\x00\x00\x00\xcb\x00\x00\x00\xcc\x00\x00\x00\xcf\x00\x00\x00\xf4\x00\x00\x00\xd8\x00\x00\x00\x28\x00\x00\x00\xd9\x00\x00\x00\xda\x00\x00\x00\xcd\x00\x00\x00\xe1\x00\x00\x00\x2b\x00\x00\x00\xe2\x00\x00\x00\xdb\x00\x00\x00\xdc\x00\x00\x00\x97\x01\x00\x00\xdd\x00\x00\x00\xde\x00\x00\x00\xdf\x00\x00\x00\xe8\x00\x00\x00\xa2\x01\x00\x00\xe5\x00\x00\x00\xea\x00\x00\x00\x3f\x00\x00\x00\xe9\x00\x00\x00\xd7\x00\x00\x00\xf5\x00\x00\x00\xe0\x00\x00\x00\x7b\x01\x00\x00\xf7\x00\x00\x00\xf9\x00\x00\x00\xfa\x00\x00\x00\xf8\x00\x00\x00\xe7\x00\x00\x00\xfe\x00\x00\x00\xff\x00\x00\x00\x88\x01\x00\x00\x77\x01\x00\x00\x84\x01\x00\x00\x83\x01\x00\x00\x85\x01\x00\x00\x86\x01\x00\x00\x8a\x01\x00\x00\x8d\x01\x00\x00\x8e\x01\x00\x00\x8f\x01\x00\x00\x87\x01\x00\x00\x90\x01\x00\x00\x7f\x01\x00\x00\x94\x01\x00\x00\x89\x01\x00\x00\x8b\x01\x00\x00\x8c\x01\x00\x00\x93\x01\x00\x00\x7a\x01\x00\x00\x80\x01\x00\x00\x98\x01\x00\x00\xa1\x01\x00\x00\x9c\x01\x00\x00\x9d\x01\x00\x00\x9e\x01\x00\x00\xa8\x01\x00\x00\xa9\x01\x00\x00\x32\x00\x00\x00\xb1\x01\x00\x00\xa6\x01\x00\x00\x9b\x01\x00\x00\x9f\x01\x00\x00\xab\x01\x00\x00\xac\x01\x00\x00\xb2\x01\x00\x00\xa5\x01\x00\x00\xa0\x01\x00\x00\xad\x01\x00\x00\xb6\x01\x00\x00\xa7\x01\x00\x00\xae\x01\x00\x00\xaf\x01\x00\x00\xaa\x01\x00\x00\xd5\x01\x00\x00\xb8\x01\x00\x00\xcb\x01\x00\x00\xcd\x01\x00\x00\xb0\x01\x00\x00\xb3\x01\x00\x00\xb4\x01\x00\x00\xb5\x01\x00\x00\xe1\x01\x00\x00\xe2\x01\x00\x00\xb7\x01\x00\x00\xb9\x01\x00\x00\xba\x01\x00\x00\xc0\x01\x00\x00\xc1\x01\x00\x00\xbb\x01\x00\x00\xc2\x01\x00\x00\xc3\x01\x00\x00\xbe\x01\x00\x00\xd6\x01\x00\x00\xbf\x01\x00\x00\xc4\x01\x00\x00\xc6\x01\x00\x00\xc7\x01\x00\x00\xd1\x01\x00\x00\xd2\x01\x00\x00\xc5\x01\x00\x00\xce\x01\x00\x00\xcc\x01\x00\x00\xca\x01\x00\x00\xd3\x01\x00\x00\xde\x01\x00\x00\xd7\x01\x00\x00\xd8\x01\x00\x00\xd9\x01\x00\x00\xdb\x01\x00\x00\xdc\x01\x00\x00\xbc\x01\x00\x00\xdf\x01\x00\x00\xe4\x01\x00\x00\xdd\x01\x00\x00\xe0\x01\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\xe3\x01\x00\x00\x54\x02\x00\x00\xe5\x01\x00\x00\x85\x02\x00\x00\xe6\x01\x00\x00\x5c\x02\x00\x00\x5d\x02\x00\x00\x5e\x02\x00\x00\x61\x02\x00\x00\x7a\x02\x00\x00\x62\x02\x00\x00\x7f\x02\x00\x00\x82\x02\x00\x00\xeb\x01\x00\x00\x00\x00\x00\x00\x3a\x02\x00\x00\xf2\x02\x00\x00\xf4\x02\x00\x00\x65\x02\x00\x00\x68\x02\x00\x00\x69\x02\x00\x00\x6a\x03\x00\x00\x2a\x03\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x63\x02\x00\x00\x5f\x02\x00\x00\xfa\x02\x00\x00\x18\x02\x00\x00\x1b\x02\x00\x00\xfb\x02\x00\x00\x6b\x02\x00\x00\x6c\x02\x00\x00\x6d\x02\x00\x00\x6e\x02\x00\x00\x73\x02\x00\x00\x64\x02\x00\x00\x70\x02\x00\x00\x74\x02\x00\x00\x75\x02\x00\x00\x6f\x02\x00\x00\x76\x02\x00\x00\x20\x04\x00\x00\xfb\x03\x00\x00\x81\x02\x00\x00\x66\x02\x00\x00\x77\x02\x00\x00\x7e\x02\x00\x00\xb6\x02\x00\x00\xb9\x02\x00\x00\xb8\x02\x00\x00\xbb\x02\x00\x00\xc4\x02\x00\x00\x83\x02\x00\x00\xc7\x02\x00\x00\xc9\x02\x00\x00\xcc\x02\x00\x00\xcd\x02\x00\x00\x89\x02\x00\x00\xd4\x02\x00\x00\xd5\x02\x00\x00\xde\x02\x00\x00\xd1\x02\x00\x00\xe7\x02\x00\x00\x2c\x04\x00\x00\x21\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x04\x00\x00\x07\x05\x00\x00\x2d\x05\x00\x00\x44\x05\x00\x00\x6a\x05\x00\x00\x81\x05\x00\x00\xa7\x05\x00\x00\xbe\x05\x00\x00\xe4\x05\x00\x00\xfb\x05\x00\x00\x21\x06\x00\x00\x38\x06\x00\x00\x5e\x06\x00\x00\x75\x06\x00\x00\x9b\x06\x00\x00\xb2\x06\x00\x00\xd8\x06\x00\x00\xf0\x06\x00\x00\x16\x07\x00\x00\x2d\x07\x00\x00\x53\x07\x00\x00\x6a\x07\x00\x00\x90\x07\x00\x00\xa7\x07\x00\x00\xcd\x07\x00\x00\xe4\x07\x00\x00\x0a\x08\x00\x00\x21\x08\x00\x00\x47\x08\x00\x00\x5e\x08\x00\x00\x84\x08\x00\x00\x9b\x08\x00\x00\xc1\x08\x00\x00\xd8\x08\x00\x00\xfe\x08\x00\x00\x15\x09\x00\x00\x3b\x09\x00\x00\x52\x09\x00\x00\x78\x09\x00\x00\x8f\x09\x00\x00\xb5\x09\x00\x00\xcc\x09\x00\x00\xf2\x09\x00\x00\x09\x0a\x00\x00\x2f\x0a\x00\x00\x46\x0a\x00\x00\x6c\x0a\x00\x00\x83\x0a\x00\x00\xca\x0a\x00\x00\xe1\x0a\x00\x00\x07\x0b\x00\x00\x1e\x0b\x00\x00\x44\x0b\x00\x00\x5b\x0b\x00\x00\x81\x0b\x00\x00\x98\x0b\x00\x00\xbe\x0b\x00\x00\xd5\x0b\x00\x00\x0f\x0c\x00\x00\x26\x0c\x00\x00\x5d\x0c\x00\x00\x74\x0c\x00\x00\x9a\x0c\x00\x00\xb1\x0c\x00\x00\xd7\x0c\x00\x00\xfd\x0c\x00\x00\x14\x0d\x00\x00\x4b\x0d\x00\x00\x62\x0d\x00\x00\x88\x0d\x00\x00\x9f\x0d\x00\x00\xc5\x0d\x00\x00\xdc\x0d\x00\x00\x02\x0e\x00\x00\x19\x0e\x00\x00\x3f\x0e\x00\x00\x56\x0e\x00\x00\x7c\x0e\x00\x00\x93\x0e\x00\x00\xb9\x0e\x00\x00\xd0\x0e\x00\x00\xf6\x0e\x00\x00\x0d\x0f\x00\x00\x33\x0f\x00\x00\x4a\x0f\x00\x00\x70\x0f\x00\x00\x87\x0f\x00\x00\xad\x0f\x00\x00\xc4\x0f\x00\x00\xea\x0f\x00\x00\x01\x10\x00\x00\x27\x10\x00\x00\x3e\x10\x00\x00\x64\x10\x00\x00\x7b\x10\x00\x00\xb4\x10\x00\x00\xcd\x10\x00\x00\x04\x11\x00\x00\x1b\x11\x00\x00\x41\x11\x00\x00\x58\x11\x00\x00\x7e\x11\x00\x00\x95\x11\x00\x00\xbb\x11\x00\x00\xd2\x11\x00\x00\xf8\x11\x00\x00\x0f\x12\x00\x00\x35\x12\x00\x00\x4c\x12\x00\x00\x72\x12\x00\x00\x89\x12\x00\x00\xaf\x12\x00\x00\xc6\x12\x00\x00\xec\x12\x00\x00\x03\x13\x00\x00\x29\x13\x00\x00\x40\x13\x00\x00\x66\x13\x00\x00\x7d\x13\x00\x00\xa3\x13\x00\x00\xba\x13\x00\x00\xe0\x13\x00\x00\xf7\x13\x00\x00\x1d\x14\x00\x00\x34\x14\x00\x00\x5a\x14\x00\x00\x71\x14\x00\x00\x97\x14\x00\x00\xae\x14\x00\x00\xd4\x14\x00\x00\xeb\x14\x00\x00\x11\x15\x00\x00\x28\x15\x00\x00\x4e\x15\x00\x00\x65\x15\x00\x00\x58\x15\x00\x00"#
 
@@ -488,7 +511,7 @@
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "<built-in>" #-}
 {-# LINE 1 "<command-line>" #-}
-{-# LINE 9 "<command-line>" #-}
+{-# LINE 10 "<command-line>" #-}
 # 1 "/usr/include/stdc-predef.h" 1 3 4
 
 # 17 "/usr/include/stdc-predef.h" 3 4
@@ -534,7 +557,26 @@
 
 
 
-{-# LINE 9 "<command-line>" #-}
+{-# LINE 10 "<command-line>" #-}
+{-# LINE 1 "/usr/lib/ghc/include/ghcversion.h" #-}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 10 "<command-line>" #-}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 -- -----------------------------------------------------------------------------
 -- ALEX TEMPLATE
@@ -591,8 +633,8 @@
   narrow32Int# i
   where
    i    = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
-		     (b2 `uncheckedShiftL#` 16#) `or#`
-		     (b1 `uncheckedShiftL#` 8#) `or#` b0)
+                     (b2 `uncheckedShiftL#` 16#) `or#`
+                     (b1 `uncheckedShiftL#` 8#) `or#` b0)
    b3   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
    b2   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
    b1   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
@@ -632,30 +674,30 @@
 
 alexScanUser user input (I# (sc))
   = case alex_scan_tkn user input 0# input sc AlexNone of
-	(AlexNone, input') ->
-		case alexGetByte input of
-			Nothing -> 
+        (AlexNone, input') ->
+                case alexGetByte input of
+                        Nothing -> 
 
 
 
-				   AlexEOF
-			Just _ ->
+                                   AlexEOF
+                        Just _ ->
 
 
 
-				   AlexError input'
+                                   AlexError input'
 
-	(AlexLastSkip input'' len, _) ->
+        (AlexLastSkip input'' len, _) ->
 
 
 
-		AlexSkip input'' len
+                AlexSkip input'' len
 
-	(AlexLastAcc k input''' len, _) ->
+        (AlexLastAcc k input''' len, _) ->
 
 
 
-		AlexToken input''' len k
+                AlexToken input''' len k
 
 
 -- Push the input through the DFA, remembering the most recent accepting
@@ -664,7 +706,7 @@
 alex_scan_tkn user orig_input len input s last_acc =
   input `seq` -- strict in the input
   let 
-	new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))
+        new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))
   in
   new_acc `seq`
   case alexGetByte input of
@@ -678,23 +720,23 @@
                 base   = alexIndexInt32OffAddr alex_base s
                 offset = (base +# ord_c)
                 check  = alexIndexInt16OffAddr alex_check offset
-		
+                
                 new_s = if GTE(offset,0#) && EQ(check,ord_c)
-			  then alexIndexInt16OffAddr alex_table offset
-			  else alexIndexInt16OffAddr alex_deflt s
-	in
+                          then alexIndexInt16OffAddr alex_table offset
+                          else alexIndexInt16OffAddr alex_deflt s
+        in
         case new_s of
-	    -1# -> (new_acc, input)
-		-- on an error, we want to keep the input *before* the
-		-- character that failed, not after.
-    	    _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len)
+            -1# -> (new_acc, input)
+                -- on an error, we want to keep the input *before* the
+                -- character that failed, not after.
+            _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len)
                                                 -- note that the length is increased ONLY if this is the 1st byte in a char encoding)
-			new_input new_s new_acc
+                        new_input new_s new_acc
       }
   where
-	check_accs (AlexAccNone) = last_acc
-	check_accs (AlexAcc a  ) = AlexLastAcc a input (I# (len))
-	check_accs (AlexAccSkip) = AlexLastSkip  input (I# (len))
+        check_accs (AlexAccNone) = last_acc
+        check_accs (AlexAcc a  ) = AlexLastAcc a input (I# (len))
+        check_accs (AlexAccSkip) = AlexLastSkip  input (I# (len))
 {-# LINE 198 "templates/GenericTemplate.hs" #-}
 
 data AlexLastAcc a
@@ -703,15 +745,11 @@
   | AlexLastSkip  !AlexInput !Int
 
 instance Functor AlexLastAcc where
-    fmap f AlexNone = AlexNone
+    fmap _ AlexNone = AlexNone
     fmap f (AlexLastAcc x y z) = AlexLastAcc (f x) y z
-    fmap f (AlexLastSkip x y) = AlexLastSkip x y
+    fmap _ (AlexLastSkip x y) = AlexLastSkip x y
 
 data AlexAcc a user
   = AlexAccNone
   | AlexAcc a
   | AlexAccSkip
-{-# LINE 242 "templates/GenericTemplate.hs" #-}
-
--- used by wrappers
-iUnbox (I# (i)) = i
diff --git a/dist/build/hkt/hkt-tmp/HOpenPGP/Tools/Parser.hs b/dist/build/hkt/hkt-tmp/HOpenPGP/Tools/Parser.hs
--- a/dist/build/hkt/hkt-tmp/HOpenPGP/Tools/Parser.hs
+++ b/dist/build/hkt/hkt-tmp/HOpenPGP/Tools/Parser.hs
@@ -959,7 +959,7 @@
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "<built-in>" #-}
 {-# LINE 1 "<command-line>" #-}
-{-# LINE 10 "<command-line>" #-}
+{-# LINE 11 "<command-line>" #-}
 # 1 "/usr/include/stdc-predef.h" 1 3 4
 
 # 17 "/usr/include/stdc-predef.h" 3 4
@@ -1005,7 +1005,26 @@
 
 
 
-{-# LINE 10 "<command-line>" #-}
+{-# LINE 11 "<command-line>" #-}
+{-# LINE 1 "/usr/lib/ghc/include/ghcversion.h" #-}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 11 "<command-line>" #-}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 -- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp 
 
diff --git a/dist/build/hot/hot-tmp/HOpenPGP/Tools/Lexer.hs b/dist/build/hot/hot-tmp/HOpenPGP/Tools/Lexer.hs
--- a/dist/build/hot/hot-tmp/HOpenPGP/Tools/Lexer.hs
+++ b/dist/build/hot/hot-tmp/HOpenPGP/Tools/Lexer.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-missing-signatures #-}
 {-# LANGUAGE CPP,MagicHash #-}
 {-# LINE 1 "HOpenPGP/Tools/Lexer.x" #-}
 
@@ -29,11 +30,9 @@
 #endif
 #if __GLASGOW_HASKELL__ >= 503
 import Data.Array
-import Data.Char (ord)
 import Data.Array.Base (unsafeAt)
 #else
 import Array
-import Char (ord)
 #endif
 #if __GLASGOW_HASKELL__ >= 503
 import GHC.Exts
@@ -44,7 +43,7 @@
 {-# LINE 1 "templates/wrappers.hs" #-}
 {-# LINE 1 "<built-in>" #-}
 {-# LINE 1 "<command-line>" #-}
-{-# LINE 8 "<command-line>" #-}
+{-# LINE 9 "<command-line>" #-}
 # 1 "/usr/include/stdc-predef.h" 1 3 4
 
 # 17 "/usr/include/stdc-predef.h" 3 4
@@ -90,7 +89,26 @@
 
 
 
-{-# LINE 8 "<command-line>" #-}
+{-# LINE 9 "<command-line>" #-}
+{-# LINE 1 "/usr/lib/ghc/include/ghcversion.h" #-}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 9 "<command-line>" #-}
 {-# LINE 1 "templates/wrappers.hs" #-}
 -- -----------------------------------------------------------------------------
 -- Alex wrapper code.
@@ -99,9 +117,12 @@
 -- it for any purpose whatsoever.
 
 import Control.Applicative (Applicative (..))
+import qualified Control.Monad (ap)
 import Data.Word (Word8)
-{-# LINE 23 "templates/wrappers.hs" #-}
+import Data.Int (Int64)
+{-# LINE 25 "templates/wrappers.hs" #-}
 
+import Data.Char (ord)
 import qualified Data.Bits
 
 -- | Encode a Haskell String to a list of Word8 values, in UTF8 format.
@@ -152,11 +173,11 @@
                               in p' `seq`  Just (b, (p', c, bs, s))
 
 
-{-# LINE 93 "templates/wrappers.hs" #-}
+{-# LINE 98 "templates/wrappers.hs" #-}
 
-{-# LINE 107 "templates/wrappers.hs" #-}
+{-# LINE 116 "templates/wrappers.hs" #-}
 
-{-# LINE 122 "templates/wrappers.hs" #-}
+{-# LINE 134 "templates/wrappers.hs" #-}
 
 -- -----------------------------------------------------------------------------
 -- Token positions
@@ -176,7 +197,7 @@
 alexStartPos = AlexPn 0 1 1
 
 alexMove :: AlexPosn -> Char -> AlexPosn
-alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (((c+7) `div` 8)*8+1)
+alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (((c+alex_tab_size-1) `div` alex_tab_size)*alex_tab_size+1)
 alexMove (AlexPn a l c) '\n' = AlexPn (a+1) (l+1)   1
 alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)
 
@@ -296,21 +317,21 @@
 -- -----------------------------------------------------------------------------
 -- Monad (with ByteString input)
 
-{-# LINE 347 "templates/wrappers.hs" #-}
+{-# LINE 371 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Basic wrapper
 
-{-# LINE 374 "templates/wrappers.hs" #-}
+{-# LINE 398 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Basic wrapper, ByteString version
 
-{-# LINE 392 "templates/wrappers.hs" #-}
+{-# LINE 418 "templates/wrappers.hs" #-}
 
-{-# LINE 406 "templates/wrappers.hs" #-}
+{-# LINE 434 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -318,13 +339,13 @@
 
 -- Adds text positions to the basic model.
 
-{-# LINE 423 "templates/wrappers.hs" #-}
+{-# LINE 451 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Posn wrapper, ByteString version
 
-{-# LINE 438 "templates/wrappers.hs" #-}
+{-# LINE 467 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -332,6 +353,8 @@
 
 -- For compatibility with previous versions of Alex, and because we can.
 
+alex_tab_size :: Int
+alex_tab_size = 8
 alex_base :: AlexAddr
 alex_base = AlexA# "\xf8\xff\xff\xff\x8d\xff\xff\xff\xa2\xff\xff\xff\x8f\xff\xff\xff\xa3\xff\xff\xff\x96\xff\xff\xff\x98\xff\xff\xff\xa7\xff\xff\xff\x9e\xff\xff\xff\x9f\xff\xff\xff\xa0\xff\xff\xff\xd1\xff\xff\xff\xd2\xff\xff\xff\xd6\xff\xff\xff\x97\xff\xff\xff\xac\xff\xff\xff\xad\xff\xff\xff\xae\xff\xff\xff\x9d\xff\xff\xff\xb2\xff\xff\xff\xb4\xff\xff\xff\xb5\xff\xff\xff\xb6\xff\xff\xff\xe9\xff\xff\xff\xf1\xff\xff\xff\xc5\xff\xff\xff\xba\xff\xff\xff\xb8\xff\xff\xff\xc0\xff\xff\xff\xe0\xff\xff\xff\xd3\xff\xff\xff\xd5\xff\xff\xff\xdf\xff\xff\xff\xe7\xff\xff\xff\xe8\xff\xff\xff\x0e\x00\x00\x00\xe6\xff\xff\xff\xea\xff\xff\xff\xeb\xff\xff\xff\xec\xff\xff\xff\xed\xff\xff\xff\xef\xff\xff\xff\xf9\xff\xff\xff\x05\x00\x00\x00\x0f\x00\x00\x00\x20\x00\x00\x00\x38\x00\x00\x00\x02\x00\x00\x00\x1f\x00\x00\x00\x0d\x00\x00\x00\x08\x00\x00\x00\x13\x00\x00\x00\x0c\x00\x00\x00\x10\x00\x00\x00\x11\x00\x00\x00\xfd\xff\xff\xff\x0b\x00\x00\x00\x1a\x00\x00\x00\x17\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x1b\x00\x00\x00\x1d\x00\x00\x00\x2c\x00\x00\x00\x31\x00\x00\x00\x3a\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x5a\x00\x00\x00\x43\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x2e\x00\x00\x00\x2a\x00\x00\x00\x1c\x00\x00\x00\x2d\x00\x00\x00\x21\x00\x00\x00\x2f\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xec\x00\x00\x00\xed\x00\x00\x00\xee\x00\x00\x00\xef\x00\x00\x00\x39\x00\x00\x00\xf0\x00\x00\x00\xf1\x00\x00\x00\xf2\x00\x00\x00\xf3\x00\x00\x00\x30\x00\x00\x00\x35\x00\x00\x00\xf6\x00\x00\x00\x3b\x00\x00\x00\xe4\x00\x00\x00\x3c\x00\x00\x00\x41\x00\x00\x00\x99\x01\x00\x00\x9a\x01\x00\x00\xe6\x00\x00\x00\xeb\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x4a\x00\x00\x00\xd3\x00\x00\x00\xca\x00\x00\x00\xcb\x00\x00\x00\xcc\x00\x00\x00\xcf\x00\x00\x00\xf4\x00\x00\x00\xd8\x00\x00\x00\x28\x00\x00\x00\xd9\x00\x00\x00\xda\x00\x00\x00\xcd\x00\x00\x00\xe1\x00\x00\x00\x2b\x00\x00\x00\xe2\x00\x00\x00\xdb\x00\x00\x00\xdc\x00\x00\x00\x97\x01\x00\x00\xdd\x00\x00\x00\xde\x00\x00\x00\xdf\x00\x00\x00\xe8\x00\x00\x00\xa2\x01\x00\x00\xe5\x00\x00\x00\xea\x00\x00\x00\x3f\x00\x00\x00\xe9\x00\x00\x00\xd7\x00\x00\x00\xf5\x00\x00\x00\xe0\x00\x00\x00\x7b\x01\x00\x00\xf7\x00\x00\x00\xf9\x00\x00\x00\xfa\x00\x00\x00\xf8\x00\x00\x00\xe7\x00\x00\x00\xfe\x00\x00\x00\xff\x00\x00\x00\x88\x01\x00\x00\x77\x01\x00\x00\x84\x01\x00\x00\x83\x01\x00\x00\x85\x01\x00\x00\x86\x01\x00\x00\x8a\x01\x00\x00\x8d\x01\x00\x00\x8e\x01\x00\x00\x8f\x01\x00\x00\x87\x01\x00\x00\x90\x01\x00\x00\x7f\x01\x00\x00\x94\x01\x00\x00\x89\x01\x00\x00\x8b\x01\x00\x00\x8c\x01\x00\x00\x93\x01\x00\x00\x7a\x01\x00\x00\x80\x01\x00\x00\x98\x01\x00\x00\xa1\x01\x00\x00\x9c\x01\x00\x00\x9d\x01\x00\x00\x9e\x01\x00\x00\xa8\x01\x00\x00\xa9\x01\x00\x00\x32\x00\x00\x00\xb1\x01\x00\x00\xa6\x01\x00\x00\x9b\x01\x00\x00\x9f\x01\x00\x00\xab\x01\x00\x00\xac\x01\x00\x00\xb2\x01\x00\x00\xa5\x01\x00\x00\xa0\x01\x00\x00\xad\x01\x00\x00\xb6\x01\x00\x00\xa7\x01\x00\x00\xae\x01\x00\x00\xaf\x01\x00\x00\xaa\x01\x00\x00\xd5\x01\x00\x00\xb8\x01\x00\x00\xcb\x01\x00\x00\xcd\x01\x00\x00\xb0\x01\x00\x00\xb3\x01\x00\x00\xb4\x01\x00\x00\xb5\x01\x00\x00\xe1\x01\x00\x00\xe2\x01\x00\x00\xb7\x01\x00\x00\xb9\x01\x00\x00\xba\x01\x00\x00\xc0\x01\x00\x00\xc1\x01\x00\x00\xbb\x01\x00\x00\xc2\x01\x00\x00\xc3\x01\x00\x00\xbe\x01\x00\x00\xd6\x01\x00\x00\xbf\x01\x00\x00\xc4\x01\x00\x00\xc6\x01\x00\x00\xc7\x01\x00\x00\xd1\x01\x00\x00\xd2\x01\x00\x00\xc5\x01\x00\x00\xce\x01\x00\x00\xcc\x01\x00\x00\xca\x01\x00\x00\xd3\x01\x00\x00\xde\x01\x00\x00\xd7\x01\x00\x00\xd8\x01\x00\x00\xd9\x01\x00\x00\xdb\x01\x00\x00\xdc\x01\x00\x00\xbc\x01\x00\x00\xdf\x01\x00\x00\xe4\x01\x00\x00\xdd\x01\x00\x00\xe0\x01\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\xe3\x01\x00\x00\x54\x02\x00\x00\xe5\x01\x00\x00\x85\x02\x00\x00\xe6\x01\x00\x00\x5c\x02\x00\x00\x5d\x02\x00\x00\x5e\x02\x00\x00\x61\x02\x00\x00\x7a\x02\x00\x00\x62\x02\x00\x00\x7f\x02\x00\x00\x82\x02\x00\x00\xeb\x01\x00\x00\x00\x00\x00\x00\x3a\x02\x00\x00\xf2\x02\x00\x00\xf4\x02\x00\x00\x65\x02\x00\x00\x68\x02\x00\x00\x69\x02\x00\x00\x6a\x03\x00\x00\x2a\x03\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x63\x02\x00\x00\x5f\x02\x00\x00\xfa\x02\x00\x00\x18\x02\x00\x00\x1b\x02\x00\x00\xfb\x02\x00\x00\x6b\x02\x00\x00\x6c\x02\x00\x00\x6d\x02\x00\x00\x6e\x02\x00\x00\x73\x02\x00\x00\x64\x02\x00\x00\x70\x02\x00\x00\x74\x02\x00\x00\x75\x02\x00\x00\x6f\x02\x00\x00\x76\x02\x00\x00\x20\x04\x00\x00\xfb\x03\x00\x00\x81\x02\x00\x00\x66\x02\x00\x00\x77\x02\x00\x00\x7e\x02\x00\x00\xb6\x02\x00\x00\xb9\x02\x00\x00\xb8\x02\x00\x00\xbb\x02\x00\x00\xc4\x02\x00\x00\x83\x02\x00\x00\xc7\x02\x00\x00\xc9\x02\x00\x00\xcc\x02\x00\x00\xcd\x02\x00\x00\x89\x02\x00\x00\xd4\x02\x00\x00\xd5\x02\x00\x00\xde\x02\x00\x00\xd1\x02\x00\x00\xe7\x02\x00\x00\x2c\x04\x00\x00\x21\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x04\x00\x00\x07\x05\x00\x00\x2d\x05\x00\x00\x44\x05\x00\x00\x6a\x05\x00\x00\x81\x05\x00\x00\xa7\x05\x00\x00\xbe\x05\x00\x00\xe4\x05\x00\x00\xfb\x05\x00\x00\x21\x06\x00\x00\x38\x06\x00\x00\x5e\x06\x00\x00\x75\x06\x00\x00\x9b\x06\x00\x00\xb2\x06\x00\x00\xd8\x06\x00\x00\xf0\x06\x00\x00\x16\x07\x00\x00\x2d\x07\x00\x00\x53\x07\x00\x00\x6a\x07\x00\x00\x90\x07\x00\x00\xa7\x07\x00\x00\xcd\x07\x00\x00\xe4\x07\x00\x00\x0a\x08\x00\x00\x21\x08\x00\x00\x47\x08\x00\x00\x5e\x08\x00\x00\x84\x08\x00\x00\x9b\x08\x00\x00\xc1\x08\x00\x00\xd8\x08\x00\x00\xfe\x08\x00\x00\x15\x09\x00\x00\x3b\x09\x00\x00\x52\x09\x00\x00\x78\x09\x00\x00\x8f\x09\x00\x00\xb5\x09\x00\x00\xcc\x09\x00\x00\xf2\x09\x00\x00\x09\x0a\x00\x00\x2f\x0a\x00\x00\x46\x0a\x00\x00\x6c\x0a\x00\x00\x83\x0a\x00\x00\xca\x0a\x00\x00\xe1\x0a\x00\x00\x07\x0b\x00\x00\x1e\x0b\x00\x00\x44\x0b\x00\x00\x5b\x0b\x00\x00\x81\x0b\x00\x00\x98\x0b\x00\x00\xbe\x0b\x00\x00\xd5\x0b\x00\x00\x0f\x0c\x00\x00\x26\x0c\x00\x00\x5d\x0c\x00\x00\x74\x0c\x00\x00\x9a\x0c\x00\x00\xb1\x0c\x00\x00\xd7\x0c\x00\x00\xfd\x0c\x00\x00\x14\x0d\x00\x00\x4b\x0d\x00\x00\x62\x0d\x00\x00\x88\x0d\x00\x00\x9f\x0d\x00\x00\xc5\x0d\x00\x00\xdc\x0d\x00\x00\x02\x0e\x00\x00\x19\x0e\x00\x00\x3f\x0e\x00\x00\x56\x0e\x00\x00\x7c\x0e\x00\x00\x93\x0e\x00\x00\xb9\x0e\x00\x00\xd0\x0e\x00\x00\xf6\x0e\x00\x00\x0d\x0f\x00\x00\x33\x0f\x00\x00\x4a\x0f\x00\x00\x70\x0f\x00\x00\x87\x0f\x00\x00\xad\x0f\x00\x00\xc4\x0f\x00\x00\xea\x0f\x00\x00\x01\x10\x00\x00\x27\x10\x00\x00\x3e\x10\x00\x00\x64\x10\x00\x00\x7b\x10\x00\x00\xb4\x10\x00\x00\xcd\x10\x00\x00\x04\x11\x00\x00\x1b\x11\x00\x00\x41\x11\x00\x00\x58\x11\x00\x00\x7e\x11\x00\x00\x95\x11\x00\x00\xbb\x11\x00\x00\xd2\x11\x00\x00\xf8\x11\x00\x00\x0f\x12\x00\x00\x35\x12\x00\x00\x4c\x12\x00\x00\x72\x12\x00\x00\x89\x12\x00\x00\xaf\x12\x00\x00\xc6\x12\x00\x00\xec\x12\x00\x00\x03\x13\x00\x00\x29\x13\x00\x00\x40\x13\x00\x00\x66\x13\x00\x00\x7d\x13\x00\x00\xa3\x13\x00\x00\xba\x13\x00\x00\xe0\x13\x00\x00\xf7\x13\x00\x00\x1d\x14\x00\x00\x34\x14\x00\x00\x5a\x14\x00\x00\x71\x14\x00\x00\x97\x14\x00\x00\xae\x14\x00\x00\xd4\x14\x00\x00\xeb\x14\x00\x00\x11\x15\x00\x00\x28\x15\x00\x00\x4e\x15\x00\x00\x65\x15\x00\x00\x58\x15\x00\x00"#
 
@@ -488,7 +511,7 @@
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "<built-in>" #-}
 {-# LINE 1 "<command-line>" #-}
-{-# LINE 9 "<command-line>" #-}
+{-# LINE 10 "<command-line>" #-}
 # 1 "/usr/include/stdc-predef.h" 1 3 4
 
 # 17 "/usr/include/stdc-predef.h" 3 4
@@ -534,7 +557,26 @@
 
 
 
-{-# LINE 9 "<command-line>" #-}
+{-# LINE 10 "<command-line>" #-}
+{-# LINE 1 "/usr/lib/ghc/include/ghcversion.h" #-}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 10 "<command-line>" #-}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 -- -----------------------------------------------------------------------------
 -- ALEX TEMPLATE
@@ -591,8 +633,8 @@
   narrow32Int# i
   where
    i    = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
-		     (b2 `uncheckedShiftL#` 16#) `or#`
-		     (b1 `uncheckedShiftL#` 8#) `or#` b0)
+                     (b2 `uncheckedShiftL#` 16#) `or#`
+                     (b1 `uncheckedShiftL#` 8#) `or#` b0)
    b3   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
    b2   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
    b1   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
@@ -632,30 +674,30 @@
 
 alexScanUser user input (I# (sc))
   = case alex_scan_tkn user input 0# input sc AlexNone of
-	(AlexNone, input') ->
-		case alexGetByte input of
-			Nothing -> 
+        (AlexNone, input') ->
+                case alexGetByte input of
+                        Nothing -> 
 
 
 
-				   AlexEOF
-			Just _ ->
+                                   AlexEOF
+                        Just _ ->
 
 
 
-				   AlexError input'
+                                   AlexError input'
 
-	(AlexLastSkip input'' len, _) ->
+        (AlexLastSkip input'' len, _) ->
 
 
 
-		AlexSkip input'' len
+                AlexSkip input'' len
 
-	(AlexLastAcc k input''' len, _) ->
+        (AlexLastAcc k input''' len, _) ->
 
 
 
-		AlexToken input''' len k
+                AlexToken input''' len k
 
 
 -- Push the input through the DFA, remembering the most recent accepting
@@ -664,7 +706,7 @@
 alex_scan_tkn user orig_input len input s last_acc =
   input `seq` -- strict in the input
   let 
-	new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))
+        new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))
   in
   new_acc `seq`
   case alexGetByte input of
@@ -678,23 +720,23 @@
                 base   = alexIndexInt32OffAddr alex_base s
                 offset = (base +# ord_c)
                 check  = alexIndexInt16OffAddr alex_check offset
-		
+                
                 new_s = if GTE(offset,0#) && EQ(check,ord_c)
-			  then alexIndexInt16OffAddr alex_table offset
-			  else alexIndexInt16OffAddr alex_deflt s
-	in
+                          then alexIndexInt16OffAddr alex_table offset
+                          else alexIndexInt16OffAddr alex_deflt s
+        in
         case new_s of
-	    -1# -> (new_acc, input)
-		-- on an error, we want to keep the input *before* the
-		-- character that failed, not after.
-    	    _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len)
+            -1# -> (new_acc, input)
+                -- on an error, we want to keep the input *before* the
+                -- character that failed, not after.
+            _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len)
                                                 -- note that the length is increased ONLY if this is the 1st byte in a char encoding)
-			new_input new_s new_acc
+                        new_input new_s new_acc
       }
   where
-	check_accs (AlexAccNone) = last_acc
-	check_accs (AlexAcc a  ) = AlexLastAcc a input (I# (len))
-	check_accs (AlexAccSkip) = AlexLastSkip  input (I# (len))
+        check_accs (AlexAccNone) = last_acc
+        check_accs (AlexAcc a  ) = AlexLastAcc a input (I# (len))
+        check_accs (AlexAccSkip) = AlexLastSkip  input (I# (len))
 {-# LINE 198 "templates/GenericTemplate.hs" #-}
 
 data AlexLastAcc a
@@ -703,15 +745,11 @@
   | AlexLastSkip  !AlexInput !Int
 
 instance Functor AlexLastAcc where
-    fmap f AlexNone = AlexNone
+    fmap _ AlexNone = AlexNone
     fmap f (AlexLastAcc x y z) = AlexLastAcc (f x) y z
-    fmap f (AlexLastSkip x y) = AlexLastSkip x y
+    fmap _ (AlexLastSkip x y) = AlexLastSkip x y
 
 data AlexAcc a user
   = AlexAccNone
   | AlexAcc a
   | AlexAccSkip
-{-# LINE 242 "templates/GenericTemplate.hs" #-}
-
--- used by wrappers
-iUnbox (I# (i)) = i
diff --git a/dist/build/hot/hot-tmp/HOpenPGP/Tools/Parser.hs b/dist/build/hot/hot-tmp/HOpenPGP/Tools/Parser.hs
--- a/dist/build/hot/hot-tmp/HOpenPGP/Tools/Parser.hs
+++ b/dist/build/hot/hot-tmp/HOpenPGP/Tools/Parser.hs
@@ -959,7 +959,7 @@
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "<built-in>" #-}
 {-# LINE 1 "<command-line>" #-}
-{-# LINE 10 "<command-line>" #-}
+{-# LINE 11 "<command-line>" #-}
 # 1 "/usr/include/stdc-predef.h" 1 3 4
 
 # 17 "/usr/include/stdc-predef.h" 3 4
@@ -1005,7 +1005,26 @@
 
 
 
-{-# LINE 10 "<command-line>" #-}
+{-# LINE 11 "<command-line>" #-}
+{-# LINE 1 "/usr/lib/ghc/include/ghcversion.h" #-}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 11 "<command-line>" #-}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 -- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp 
 
diff --git a/hkt.hs b/hkt.hs
--- a/hkt.hs
+++ b/hkt.hs
@@ -73,8 +73,8 @@
 import Options.Applicative.Types (Parser)
 
 import System.IO (Handle, hFlush, stderr, hSetBuffering, BufferMode(..))
-import Text.PrettyPrint.ANSI.Leijen ((<+>), (</>), hardline, hPutDoc, list, putDoc, text)
-import Text.PrettyPrint.Free (pretty)
+import qualified Text.PrettyPrint.ANSI.Leijen as PPAL
+import Text.PrettyPrint.Free ((<+>), hardline, pretty, putDoc, text)
 
 grabMatchingKeysConduit :: MonadResource m => FilePath -> Bool -> Text -> Source m TK
 grabMatchingKeysConduit fp filt srch = CB.sourceFile fp $= conduitGet get $= conduitToTKsDropping $= (if filt then conduitTKFilter ufp else CL.filter matchAny)
@@ -166,7 +166,7 @@
     <*> pure ""
     <*> pure ""
     where
-        targetHelp = helpDoc . Just $ text "target (which keys to output)*"
+        targetHelp = helpDoc . Just $ PPAL.text "target (which keys to output)*"
 
 graphO :: String -> Parser Options
 graphO homedir = Options
@@ -186,9 +186,9 @@
     <*> pure ""
     <*> pure ""
     where
-        ofhelp = helpDoc . Just $ text "output format" <> hardline <> list (map (text . show) ofchoices)
+        ofhelp = helpDoc . Just $ PPAL.text "output format" <> PPAL.hardline <> PPAL.list (map (PPAL.text . show) ofchoices)
         ofchoices = [minBound..maxBound] :: [GraphOutputFormat]
-        targetHelp = helpDoc . Just $ text "target (which keys to graph)*"
+        targetHelp = helpDoc . Just $ PPAL.text "target (which keys to graph)*"
 
 findPathsO :: String -> Parser Options
 findPathsO homedir = Options
@@ -208,9 +208,9 @@
     <*> argument str ( metavar "FROM-KEYS" <> fromHelp )
     <*> argument str ( metavar "TO-KEYS" <> toHelp )
     where
-        targetHelp = helpDoc . Just $ text "target (which keys to use in pathfinding)*"
-        fromHelp = helpDoc . Just $ text "from (which keys to use for the source of paths)*"
-        toHelp = helpDoc . Just $ text "to (which keys to use for the destinations of paths)*"
+        targetHelp = helpDoc . Just $ PPAL.text "target (which keys to use in pathfinding)*"
+        fromHelp = helpDoc . Just $ PPAL.text "from (which keys to use for the source of paths)*"
+        toHelp = helpDoc . Just $ PPAL.text "to (which keys to use for the destinations of paths)*"
 
 dispatch :: Command -> IO ()
 dispatch (CmdList o) = banner' stderr >> hFlush stderr >> doList o
@@ -232,14 +232,14 @@
    <> command "list" (info ( CmdList <$> listO homedir) ( progDesc "list matching keys" <> footerDoc (Just foot) ))
     )
     where
-        foot = hardline <> text "*if --filter is not specified, this must be"
-               </> text "a fingerprint," </> text "an eight-octet key ID,"
-               </> text "or a substring of a UID (including an empty string)" <> hardline
-               <> text "if --filter is specified, it must be"
-               </> text "something in filter syntax (see source)."
+        foot = PPAL.hardline <> PPAL.text "*if --filter is not specified, this must be"
+               PPAL.</> PPAL.text "a fingerprint," PPAL.</> PPAL.text "an eight-octet key ID,"
+               PPAL.</> PPAL.text "or a substring of a UID (including an empty string)" <> PPAL.hardline
+               <> PPAL.text "if --filter is specified, it must be"
+               PPAL.</> PPAL.text "something in filter syntax (see source)."
 
 banner' :: Handle -> IO ()
-banner' h = hPutDoc h (banner "hkt" <> hardline <> warranty "hkt" <> hardline)
+banner' h = PPAL.hPutDoc h (banner "hkt" <> PPAL.hardline <> warranty "hkt" <> PPAL.hardline)
 
 doList :: Options -> IO ()
 doList o = do
diff --git a/hokey.hs b/hokey.hs
--- a/hokey.hs
+++ b/hokey.hs
@@ -64,8 +64,9 @@
 import System.IO (Handle, hFlush, stderr, stdin, stdout, hSetBuffering, BufferMode(..))
 import Data.Time.Locale.Compat (defaultTimeLocale)
 
-import Text.PrettyPrint.ANSI.Leijen (colon, green, hardline, hPutDoc, indent, linebreak, list, putDoc, red, text, yellow, (<+>), Doc)
-import Text.PrettyPrint.Free (pretty)
+import qualified Text.PrettyPrint.ANSI.Leijen as PPAL
+import Text.PrettyPrint.Free (colon, indent, linebreak, list, pretty, text, (<+>), Doc)
+import System.Console.Terminfo.PrettyPrint (green, red, yellow, displayLn, Effect)
 
 data KAS = KAS {
     pubkeyalgo :: Colored PubKeyAlgorithm
@@ -217,14 +218,14 @@
         hasheds (SigV4 _ _ _ xs _ _ _) = xs
         hasheds _ = []
 
-prettyKeyReport :: POSIXTime -> TK -> Doc
+prettyKeyReport :: POSIXTime -> TK -> Doc Effect
 prettyKeyReport cpt key = do
  let keyReport = checkKey (Just cpt) key
  execWriter $ tell
    ( linebreak <> text "Key has potential validity:" <+> text (keyStatus keyReport)
-  <> linebreak <> text "Key has fingerprint:" <+> text (show (pretty (SpacedFingerprint (keyFingerprint keyReport))))
+  <> linebreak <> text "Key has fingerprint:" <+> pretty (SpacedFingerprint (keyFingerprint keyReport))
   <> linebreak <> text "Checking to see if key is OpenPGPv4:" <+> coloredToColor (text . show) (keyVer keyReport)
-  <> linebreak <> (\kas -> text "Checking to see if key is RSA or DSA (>= 2048-bit):" <+> coloredToColor (text . show) (pubkeyalgo kas) <+> coloredToColor (text . maybe "unknown" show) (pubkeysize kas)) (keyAlgorithmAndSize keyReport)
+  <> linebreak <> (\kas -> text "Checking to see if key is RSA or DSA (>= 2048-bit):" <+> coloredToColor pretty (pubkeyalgo kas) <+> coloredToColor (maybe (text "unknown") pretty) (pubkeysize kas)) (keyAlgorithmAndSize keyReport)
   <> linebreak <> text "Checking user-ID- and user-attribute-related items:"
   <> mconcat (map (uidtrip (keyCreationTime keyReport) . gottabeabetterway) (unFakeMap (keyUIDsAndUAts keyReport)))
   <> linebreak
@@ -236,10 +237,10 @@
         coloredToColor f (Colored Nothing _ x) = f x
         uidtrip ts (u, ur)
            | null (uidRevocationStatus ur) = linebreak <> indent 2 (coloredToColor text (fmap T.unpack u)) <> colon
-          <> linebreak <> indent 4 (text "Self-sig hash algorithms" <> colon <+> (list . map (coloredToColor (text . show)) . uidSelfSigHashAlgorithms) ur)
-          <> linebreak <> indent 4 (text "Preferred hash algorithms" <> colon <+> mconcat (map ((linebreak <>) . indent 2 . coloredToColor (text . show)) (uidPreferredHashAlgorithms ur)))
-          <> linebreak <> indent 4 (text "Key expiration times" <> colon <+> mconcat (map ((linebreak <>) . indent 2 . coloredToColor list . fmap (map (text . keyExp ts))) (uidKeyExpirationTimes ur)))
-          <> linebreak <> indent 4 (text "Key usage flags" <> colon <+> mconcat (map ((linebreak <>) . indent 2 . coloredToColor (text . show . pretty . Set.toList)) (uidKeyUsageFlags ur)))
+          <> linebreak <> indent 4 (text "Self-sig hash algorithms" <> colon <+> (list . map (coloredToColor pretty) . uidSelfSigHashAlgorithms) ur)
+          <> linebreak <> indent 4 (text "Preferred hash algorithms" <> colon <+> mconcat (map (coloredToColor pretty) (uidPreferredHashAlgorithms ur)))
+          <> linebreak <> indent 4 (text "Key expiration times" <> colon <+> mconcat (map (coloredToColor list . fmap (map (text . keyExp ts))) (uidKeyExpirationTimes ur)))
+          <> linebreak <> indent 4 (text "Key usage flags" <> colon <+> (list . map (coloredToColor (pretty . Set.toList))) (uidKeyUsageFlags ur))
            | otherwise = linebreak <> indent 2 (coloredToColor text (fmap T.unpack u)) <> colon <+> text "[revoked]"
           <> linebreak <> indent 4 (text "Revocation code" <> colon <+> list (map (text . revocationCode) (uidRevocationStatus ur)))
           <> linebreak <> indent 4 (text "Revocation reason" <> colon <+> list (map (text . T.unpack . revocationReason) (uidRevocationStatus ur)))
@@ -271,7 +272,7 @@
        <> ofHelp
         )
     where
-        ofHelp = helpDoc . Just $ text "output format" <> hardline <> list (map (text . show) ofchoices)
+        ofHelp = helpDoc . Just $ PPAL.text "output format" <> PPAL.hardline <> PPAL.list (map (PPAL.text . show) ofchoices)
         ofchoices = [minBound..maxBound] :: [LintOutputFormat]
 
 
@@ -296,7 +297,7 @@
     keys <- runResourceT $ CB.sourceHandle stdin $= conduitGet get $= conduitToTKsDropping $$ CL.consume
     output (lintOutputFormat o) cpt keys
     where
-        output Pretty cpt = mapM_ (putDoc . prettyKeyReport cpt)
+        output Pretty cpt = mapM_ (displayLn . prettyKeyReport cpt)
         output JSON cpt = mapM_ (BL.putStr . flip BL.append (BL.singleton 0x0a) . jsonReport cpt)
         output YAML cpt = mapM_ (B.putStr . yamlReport cpt)
 
@@ -315,7 +316,7 @@
         indepthsort = nub . sort . over (mapped._2) sort
 
 banner' :: Handle -> IO ()
-banner' h = hPutDoc h (banner "hokey" <> hardline <> warranty "hokey" <> hardline)
+banner' h = PPAL.hPutDoc h (banner "hokey" <> PPAL.hardline <> warranty "hokey" <> PPAL.hardline)
 
 sigissuer :: SignaturePayload -> Maybe EightOctetKeyId
 getIssuer :: SigSubPacketPayload -> Maybe EightOctetKeyId
diff --git a/hopenpgp-tools.cabal b/hopenpgp-tools.cabal
--- a/hopenpgp-tools.cabal
+++ b/hopenpgp-tools.cabal
@@ -1,5 +1,5 @@
 name:                hopenpgp-tools
-version:             0.16.3
+version:             0.17
 synopsis:            hOpenPGP-based command-line tools
 description:         command-line tools for performing some OpenPGP-related operations
 homepage:            http://floss.scru.org/hopenpgp-tools
@@ -60,7 +60,7 @@
                ,       cryptohash             >= 0.7.7
                ,       directory
                ,       errors
-               ,       hOpenPGP               >= 2.2
+               ,       hOpenPGP               >= 2.4.1
                ,       ixset-typed
                ,       lens
                ,       monad-loops
@@ -71,6 +71,7 @@
                ,       time-locale-compat
                ,       transformers
                ,       wl-pprint-extras
+               ,       wl-pprint-terminfo
                ,       yaml
   default-language: Haskell2010
 
@@ -119,4 +120,4 @@
 source-repository this
   type:     git
   location: git://git.debian.org/users/clint/hopenpgp-tools.git
-  tag:      hopenpgp-tools/0.16.3
+  tag:      hopenpgp-tools/0.17
diff --git a/hot.hs b/hot.hs
--- a/hot.hs
+++ b/hot.hs
@@ -48,7 +48,7 @@
 import Options.Applicative.Builder (argument, command, footerDoc, headerDoc, help, helpDoc, info, long, metavar, option, eitherReader, prefs, progDesc, showDefaultWith, showHelpOnError, str, strOption, subparser, value)
 import Options.Applicative.Extra (customExecParser, helper)
 import Options.Applicative.Types (Parser)
-import Text.PrettyPrint.ANSI.Leijen ((<+>), hardline, hPutDoc, list, softline, text)
+import qualified Text.PrettyPrint.ANSI.Leijen as PPAL
 import Text.PrettyPrint.Free (Pretty, pretty)
 
 data Command = DumpC DumpOptions | DeArmorC | ArmorC ArmoringOptions | FilterC FilteringOptions
@@ -125,7 +125,7 @@
     <> showDefaultWith (drop 4 . show)
     <> ofHelp )
     where
-        ofHelp = helpDoc . Just $ text "output format" <> hardline <> list (map (text . drop 4 . show) ofchoices)
+        ofHelp = helpDoc . Just $ PPAL.text "output format" <> PPAL.hardline <> PPAL.list (map (PPAL.text . drop 4 . show) ofchoices)
         ofchoices = [minBound..maxBound] :: [DumpOutputFormat]
 
 aoP :: Parser ArmoringOptions
@@ -133,13 +133,13 @@
     <$> optional (strOption (long "comment" <> metavar "COMMENT" <> help "ASCII armor Comment field"))
     <*> option (eitherReader armorTypeReader) (long "armor-type" <> metavar "ARMORTYPE" <> armortypeHelp)
     where
-        armortypeHelp = helpDoc . Just $ text "ASCII armor type" <> softline <> list (map (text . fst) armorTypes)
+        armortypeHelp = helpDoc . Just $ PPAL.text "ASCII armor type" <> PPAL.softline <> PPAL.list (map (PPAL.text . fst) armorTypes)
 
 foP :: Parser FilteringOptions
 foP = FilteringOptions
     <$> argument str ( metavar "EXPRESSION" <> filterTargetHelp )
     where
-        filterTargetHelp = helpDoc . Just $ text "packet filter expression" <+> softline <> "see source for current syntax"
+        filterTargetHelp = helpDoc . Just $ PPAL.text "packet filter expression" PPAL.<+> PPAL.softline <> PPAL.text "see source for current syntax"
 
 dispatch :: Command -> IO ()
 dispatch c = (banner' stderr >> hFlush stderr) >> dispatch' c
@@ -163,7 +163,7 @@
   )
 
 banner' :: Handle -> IO ()
-banner' h = hPutDoc h (banner "hot" <> hardline <> warranty "hot" <> hardline)
+banner' h = PPAL.hPutDoc h (banner "hot" <> PPAL.hardline <> warranty "hot" <> PPAL.hardline)
 
 parseExpressions :: FilteringOptions -> FilterPredicates
 parseExpressions FilteringOptions{..} = RPFilterPredicate (parseE fExpression)
