diff --git a/omnicodec.cabal b/omnicodec.cabal
--- a/omnicodec.cabal
+++ b/omnicodec.cabal
@@ -1,5 +1,5 @@
 name: omnicodec
-version: 0.2
+version: 0.3
 license: GPL
 license-file: COPYING
 author: Magnus Therning
@@ -7,7 +7,7 @@
 copyright: Magnus Therning, 2007
 synopsis: data encoding and decoding command line utilities
 description: Two simply command line tools built on dataenc.
-build-depends: base, dataenc >= 0.11, directory, filepath, haskell98
+build-depends: base >= 4.0.0 && < 4.2, dataenc >= 0.13, directory, filepath, haskell98
 build-type: Simple
 category: Codec
 
diff --git a/src/odec.hs b/src/odec.hs
--- a/src/odec.hs
+++ b/src/odec.hs
@@ -22,15 +22,18 @@
 import Codec.Binary.DataEncoding
 import Data.Char
 import Data.Maybe
+import Data.Version (showVersion)
 import Data.Word
 import System
 import System.Console.GetOpt
 import Control.Exception as CE
 import System.Directory
 
-ver = "omnicode decode (odec) 0.1\n\
-    \Copyright 2007 Magnus Therning <magnus@therning.org>"
+import Paths_omnicodec (version)
 
+ver = "omnicode decode (odec) " ++ (showVersion version)
+    ++ "\nCopyright 2007-2009 Magnus Therning <magnus@therning.org>"
+
 -- {{{1 Options
 data DecOptions = DecOptions {
     optDecode :: [String] -> [Maybe Word8],
@@ -50,7 +53,7 @@
 options :: [OptDescr (DecOptions -> IO DecOptions)]
 options = [
     Option "o" ["output"] (ReqArg setOptOutput "FILE") "output to file",
-    Option "c" ["codec"] (ReqArg setOptCodec "CODEC") "use codec (uu,b85,b64,b64u,b32,b32h,b16)",
+    Option "c" ["codec"] (ReqArg setOptCodec "CODEC") "use codec (uu,xx,qp,py,b85,b64,b64u,b32,b32h,b16)",
     Option "" ["version"] (NoArg optShowVersion) "",
     Option "h" ["help"] (NoArg optShowHelp) ""
     ]
@@ -59,6 +62,9 @@
 setOptOutput fn opts = return opts { optWrite = writeFile fn, fn = Just fn }
 setOptCodec codec opts = case codec of
     "uu" -> return opts { optDecode = decode' uu . unchop uu }
+    "xx" -> return opts { optDecode = decode' xx . unchop xx }
+    "qp" -> return opts { optDecode = decode' qp . unchop qp }
+    "py" -> return opts { optDecode = decode' py . unchop py }
     "b85" -> return opts { optDecode = decode' base85 . unchop base85 }
     "b64" -> return opts { optDecode = decode' base64 . unchop base64 }
     "b64u" -> return opts { optDecode = decode' base64Url . unchop base64Url }
@@ -84,4 +90,4 @@
     let (actions, nonOpts, msgs) = getOpt RequireOrder options args
     opts <- foldl (>>=) (processFileName nonOpts) actions
     CE.catch (optRead opts >>= _decode opts >>= optWrite opts)
-        (\ e -> maybe (return ()) removeFile (fn opts) >> throwIO e)
+        (\ (CE.SomeException e) -> maybe (return ()) removeFile (fn opts) >> throwIO e)
diff --git a/src/oenc.hs b/src/oenc.hs
--- a/src/oenc.hs
+++ b/src/oenc.hs
@@ -22,15 +22,18 @@
 import Codec.Binary.DataEncoding
 import Control.Monad
 import Data.Char
+import Data.Version (showVersion)
 import Data.Word
 import Numeric
 import System
 import System.Console.GetOpt
 import System.FilePath
 
-ver = "omnicode encode (oenc) 0.1\n\
-    \Copyright 2007 Magnus Therning <magnus@therning.org>"
+import Paths_omnicodec (version)
 
+ver = "omnicode encode (oenc) " ++ (showVersion version)
+    ++ "\nCopyright 2007-2009 Magnus Therning <magnus@therning.org>"
+
 -- {{{1 Options
 data EncOptions = EncOptions {
     optEncode :: [Word8] -> [String],
@@ -47,7 +50,7 @@
 options :: [OptDescr (EncOptions -> IO EncOptions)]
 options = [
     Option "o" ["output"] (ReqArg setOptOutput "FILE") "output to file",
-    Option "c" ["codec"] (ReqArg setOptCodec "CODEC") "use codec (uu,b85,b64,b64u,b32,b32h,b16)",
+    Option "c" ["codec"] (ReqArg setOptCodec "CODEC") "use codec (uu,xx,qp,py,b85,b64,b64u,b32,b32h,b16)",
     Option "" ["version"] (NoArg optShowVersion) "",
     Option "h" ["help"] (NoArg optShowHelp) ""
     ]
@@ -55,6 +58,9 @@
 -- {{{2 option actions
 setOptCodec codec opts = case codec of
     "uu" -> return opts { optEncode = chop uu 61 . encode uu }
+    "xx" -> return opts { optEncode = chop xx 61 . encode xx }
+    "qp" -> return opts { optEncode = chop qp 60 . encode qp }
+    "py" -> return opts { optEncode = chop py 60 . encode py }
     "b85" -> return opts { optEncode = chop base85 60 . encode base85 }
     "b64" -> return opts { optEncode = chop base64 60 . encode base64 }
     "b64u" -> return opts { optEncode = chop base64Url 60 . encode base64Url }
