diff --git a/src/Text/XFormat/Read.hs b/src/Text/XFormat/Read.hs
--- a/src/Text/XFormat/Read.hs
+++ b/src/Text/XFormat/Read.hs
@@ -74,6 +74,7 @@
 
 --------------------------------------------------------------------------------
 
+import Control.Applicative ((<$>))
 import Text.ParserCombinators.ReadP
 import Data.Char (isSpace)
 
@@ -289,7 +290,7 @@
 data ChoiceF a = Choice [a]
 
 instance (Format d a) => Format (ChoiceF d) a where
-  readpf (Choice ds) = choice (fmap readpf ds)
+  readpf (Choice ds) = choice (readpf <$> ds)
 
 -- | Parse one of two formats in a fully symmetric choice.
 
@@ -297,7 +298,7 @@
 
 instance (Format d1 a1, Format d2 a2) => Format (EitherF d1 d2) (Either a1 a2) where
   readpf (Either d1 d2) =
-    (readpf d1 >>= return . Left) +++ (readpf d2 >>= return . Right)
+    (Left <$> readpf d1) +++ (Right <$> readpf d2)
 
 -- | Parse one of two formats, trying the left one first.
 
@@ -305,7 +306,7 @@
 
 instance (Format d1 a1, Format d2 a2) => Format (EitherLF d1 d2) (Either a1 a2) where
   readpf (EitherL d1 d2) =
-    (readpf d1 >>= return . Left) <++ (readpf d2 >>= return . Right)
+    (Left <$> readpf d1) <++ (Right <$> readpf d2)
 
 --------------------------------------------------------------------------------
 
diff --git a/src/Text/XFormat/Show.hs b/src/Text/XFormat/Show.hs
--- a/src/Text/XFormat/Show.hs
+++ b/src/Text/XFormat/Show.hs
@@ -64,6 +64,7 @@
 
   WrapF(..),
   AlignF(..),
+  AlignChopF(..),
   Dir(..),
 
   -- ** Other Format Descriptors
@@ -273,7 +274,7 @@
 
 data NumF a = Num
 
-instance (Num a) => Format (NumF a) (Arr a) where
+instance (Num a, Show a) => Format (NumF a) (Arr a) where
   showsf' Num = Arr shows
 
 --------------------------------------------------------------------------------
@@ -327,21 +328,31 @@
 
 data AlignF a = Align Dir Int a
 
--- | Direction (left or right) used for 'AlignF'.
+-- | Same as 'AlignF' but chop off the output if it extends past the column
+-- width.
 
+data AlignChopF a = AlignChop Dir Int a
+
+-- | Direction (left or right) used for 'AlignF' and 'AlignChopF'.
+
 data Dir = L | R
 
-align :: Dir -> Int -> ShowS -> ShowS
-align dir wid f =
+align :: Bool -> Dir -> Int -> ShowS -> ShowS
+align doChop dir wid input =
   case dir of
-    L -> f . g
-    R -> g . f
+    L -> chop (take wid)         . input . addSpaces
+    R -> chop (drop (len - wid)) . addSpaces . input
   where
-    len = length (f "")
-    g = if len < wid then showString (replicate (wid - len) ' ') else id
+    len = length (input "")
+    spaces = replicate (wid - len) ' '
+    chop act = if doChop && len > wid then act else id
+    addSpaces = if len < wid then showString spaces else id
 
 instance (Format d f) => Format (AlignF d) f where
-  showsf' (Align dir wid d) = fmap (align dir wid) (showsf' d)
+  showsf' (Align dir wid d) = fmap (align False dir wid) (showsf' d)
+
+instance (Format d f) => Format (AlignChopF d) f where
+  showsf' (AlignChop dir wid d) = fmap (align True dir wid) (showsf' d)
 
 --------------------------------------------------------------------------------
 
diff --git a/xformat.cabal b/xformat.cabal
--- a/xformat.cabal
+++ b/xformat.cabal
@@ -1,10 +1,10 @@
 name:                   xformat
-version:                0.1
+version:                0.1.1
 synopsis:
 
   Extensible, type-safe formatting with scanf- and printf-like functions
 
-homepage:               http://github.com/spl/xformat/tree/master
+homepage:               http://github.com/spl/xformat
 description:
 
   /Warning:/ This version of the package is very experimental and the interface
@@ -33,12 +33,12 @@
 copyright:              (c) 2009 Sean Leather
 license:                BSD3
 license-file:           LICENSE
-author:                 Sean Leather,
+author:                 Sean Leather
 maintainer:             leather@cs.uu.nl
 stability:              experimental
 build-type:             Custom
 cabal-version:          >= 1.2.1
-tested-with:            GHC == 6.8.3, GHC == 6.10.1
+tested-with:            GHC == 6.8.3, GHC == 6.10.1, GHC == 7.4.1
 
 --------------------------------------------------------------------------------
 
