diff --git a/README b/README
--- a/README
+++ b/README
@@ -1,5 +1,6 @@
 SYNOPSIS
-       arx ... (-h|-[?]|--help)? ...
+       arx (-h | -[?] | --help)
+       arx (-v | --version)
        arx shdat (-b <size>)? (-o <output file>)? < input
        arx shdat (-b <size>)? (-o <output file>)? <input file>+
        arx tmpx <option,archive>* (//+ <command> (//+ <option,archive>*)?)?
diff --git a/System/Posix/ARX/BlazeIsString.hs b/System/Posix/ARX/BlazeIsString.hs
deleted file mode 100644
--- a/System/Posix/ARX/BlazeIsString.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-
-module System.Posix.ARX.BlazeIsString where
-
-import Data.String
-
-import qualified Blaze.ByteString.Builder as Blaze
-import qualified Blaze.ByteString.Builder.Char8 as Blaze
-
-
-instance IsString Blaze.Builder where
-  fromString                 =  Blaze.fromString
-
diff --git a/System/Posix/ARX/CLI.hs b/System/Posix/ARX/CLI.hs
--- a/System/Posix/ARX/CLI.hs
+++ b/System/Posix/ARX/CLI.hs
@@ -17,7 +17,7 @@
 import Data.Ord
 import Data.Word
 import System.Environment
-import System.Exit
+import System.Exit (exitFailure)
 import System.IO
 
 import qualified Blaze.ByteString.Builder as Blaze
diff --git a/System/Posix/ARX/CLI/CLTokens.hs b/System/Posix/ARX/CLI/CLTokens.hs
--- a/System/Posix/ARX/CLI/CLTokens.hs
+++ b/System/Posix/ARX/CLI/CLTokens.hs
@@ -16,9 +16,10 @@
 import Data.Map (Map)
 import qualified Data.Map as Map
 
-import Data.Attoparsec.Char8 ( char8, choice, decimal, endOfInput, inClass,
-                               isDigit, parseOnly, Parser, satisfy, string,
-                               takeWhile, takeWhile1, try )
+import Data.Attoparsec.ByteString.Char8 ( char8, choice, decimal, endOfInput,
+                                          inClass, isDigit, parseOnly, Parser,
+                                          satisfy, string, takeWhile,
+                                          takeWhile1, try )
 
 
 {-| Non-overlapping classes of command line argument strings.
diff --git a/System/Posix/ARX/CLI/Options.hs b/System/Posix/ARX/CLI/Options.hs
--- a/System/Posix/ARX/CLI/Options.hs
+++ b/System/Posix/ARX/CLI/Options.hs
@@ -16,7 +16,7 @@
 import Data.Word
 import Text.Parsec hiding (satisfy, (<|>))
 
-import qualified Data.Attoparsec
+import qualified Data.Attoparsec.ByteString as Attoparsec
 
 import System.Posix.ARX.CLI.CLTokens (Class(..))
 import qualified System.Posix.ARX.CLI.CLTokens as CLTokens
@@ -145,9 +145,9 @@
  where
   next pos _ _               =  incSourceLine pos 1
 
-(<@>) :: Data.Attoparsec.Parser t -> ArgsParser ByteString -> ArgsParser t
+(<@>) :: Attoparsec.Parser t -> ArgsParser ByteString -> ArgsParser t
 atto <@> parsec              =  do
-  res                       <-  Data.Attoparsec.parseOnly atto <$> parsec
+  res                       <-  Attoparsec.parseOnly atto <$> parsec
   case res of Left _        ->  mzero
               Right x       ->  return x
 infixl 4 <@>
diff --git a/System/Posix/ARX/HEREDat.hs b/System/Posix/ARX/HEREDat.hs
--- a/System/Posix/ARX/HEREDat.hs
+++ b/System/Posix/ARX/HEREDat.hs
@@ -26,8 +26,6 @@
 import qualified Blaze.ByteString.Builder.Char8 as Blaze
 import qualified Data.ByteString.Nums.Careless as Bytes
 
-import System.Posix.ARX.BlazeIsString
-
 
 {-| A chunk describes a block of binary data ready for inclusion in a shell
     script. For many data blocks, no encoding or decoding is necessary; these
diff --git a/System/Posix/ARX/Programs.hs b/System/Posix/ARX/Programs.hs
--- a/System/Posix/ARX/Programs.hs
+++ b/System/Posix/ARX/Programs.hs
@@ -16,7 +16,6 @@
 
 import qualified Blaze.ByteString.Builder as Blaze
 
-import System.Posix.ARX.BlazeIsString -- Most string literals are builders.
 import System.Posix.ARX.HEREDat
 import qualified System.Posix.ARX.Sh as Sh
 import qualified System.Posix.ARX.TMPXTools as TMPXTools
diff --git a/System/Posix/ARX/Sh.hs b/System/Posix/ARX/Sh.hs
--- a/System/Posix/ARX/Sh.hs
+++ b/System/Posix/ARX/Sh.hs
@@ -14,8 +14,6 @@
 import qualified Blaze.ByteString.Builder as Blaze
 import qualified Text.ShellEscape as Esc
 
-import System.Posix.ARX.BlazeIsString
-
 
 setEU                       ::  Blaze.Builder
 setEU                        =  "set -e -u\n"
diff --git a/System/Posix/ARX/TMPXTools.hs b/System/Posix/ARX/TMPXTools.hs
--- a/System/Posix/ARX/TMPXTools.hs
+++ b/System/Posix/ARX/TMPXTools.hs
@@ -14,8 +14,6 @@
 import qualified Blaze.ByteString.Builder as Blaze
 import Data.FileEmbed
 
-import System.Posix.ARX.BlazeIsString
-
 
 data Template = Template { rm0 :: Bool, {-^ Remove tmp on run success?    -}
                            rm1 :: Bool, {-^ Remove tmp on run error?      -}
diff --git a/arx.cabal b/arx.cabal
--- a/arx.cabal
+++ b/arx.cabal
@@ -1,5 +1,5 @@
 name                          : arx
-version                       : 0.2.0
+version                       : 0.2.1
 category                      : Text
 license                       : BSD3
 license-file                  : LICENSE
@@ -53,7 +53,6 @@
                               , docs/blessed/arx.man
                               , docs/blessed/arx.txt
                               , model-scripts/tmpx.sh
-                              , System/Posix/ARX/BlazeIsString.hs
 
 source-repository               head
   type                        : git
diff --git a/arx.hs b/arx.hs
--- a/arx.hs
+++ b/arx.hs
@@ -16,16 +16,16 @@
 
 main                        ::  IO ()
 main                         =  do
-  helpFlag                  <-  checkHelp
-  if helpFlag then sendHelp
-              else System.Posix.ARX.CLI.main
-
-
-checkHelp = any (`elem` ["-h", "-?", "--help"]) <$> getArgs
+  flags                     <-  (,) <$> checkHelp <*> checkVersion
+  case flags of (True, _)   ->  Data.ByteString.putStr usage >> exitSuccess
+                (_, True)   ->  Data.ByteString.putStr version >> exitSuccess
+                (_,    _)   ->  System.Posix.ARX.CLI.main
 
 
-txt                          =  $(embedFile "./docs/blessed/arx.txt")
+checkHelp                    =  checkOne ["-h", "-?", "--help"]
+checkVersion                 =  checkOne ["-v", "--version"]
+checkOne list                =  any (`elem` list) . take 1 <$> getArgs
 
-sendHelp                     =  do Data.ByteString.putStr txt
-                                   exitSuccess
+usage                        =  $(embedFile "./docs/blessed/arx.txt")
+version                      =  $(embedFile "./version")
 
diff --git a/docs/blessed/arx.man b/docs/blessed/arx.man
--- a/docs/blessed/arx.man
+++ b/docs/blessed/arx.man
@@ -1,4 +1,4 @@
-.TH "ARX" "1" "2012-10-29" "0.2.0" "arx"
+.TH "ARX" "1" "2012-11-20" "0.2.0" "arx"
 .SH NAME
 arx \- archived execution
 .
@@ -34,7 +34,8 @@
 .sp
 .nf
 .ft C
-arx ... (\-h|\-[?]|\-\-help)? ...
+arx (\-h | \-[?] | \-\-help)
+arx (\-v | \-\-version)
 arx shdat (\-b <size>)? (\-o <output file>)? < input
 arx shdat (\-b <size>)? (\-o <output file>)? <input file>+
 arx tmpx <option,archive>* (//+ <command> (//+ <option,archive>*)?)?
diff --git a/docs/blessed/arx.txt b/docs/blessed/arx.txt
--- a/docs/blessed/arx.txt
+++ b/docs/blessed/arx.txt
@@ -1,5 +1,6 @@
 SYNOPSIS
-       arx ... (-h|-[?]|--help)? ...
+       arx (-h | -[?] | --help)
+       arx (-v | --version)
        arx shdat (-b <size>)? (-o <output file>)? < input
        arx shdat (-b <size>)? (-o <output file>)? <input file>+
        arx tmpx <option,archive>* (//+ <command> (//+ <option,archive>*)?)?
