diff --git a/json-select.hs b/json-select.hs
--- a/json-select.hs
+++ b/json-select.hs
@@ -118,7 +118,7 @@
   ,"path ::=                        # A path can be empty"
   ,"       | '/' <segment> <path>   # Chain a path segment and a path"
   ,""
-  ,"segement ::= '\"' <char>* '\"'  # Access the object/mapping at the given key"
+  ,"segement ::= '\"' <char>* '\"'    # Access the object/mapping at the given key"
   ,"           | [ '0' - '9' ]*     # Access the array/sequence at the given index"
   ,"           | '*'                # Keep all children of the given node (requires -m)"
   ,""
diff --git a/json-tools.cabal b/json-tools.cabal
--- a/json-tools.cabal
+++ b/json-tools.cabal
@@ -1,6 +1,6 @@
 Name:           json-tools
 Cabal-Version:  >=1.6
-Version:        0.2.0
+Version:        0.2.1
 License:        BSD3
 License-File:   LICENSE
 Copyright:      (c) Nicolas Pouillard
@@ -44,7 +44,7 @@
 
 executable json-unlines
     main-is: json-unlines.hs
-    Build-depends: base>=3&&<5, AttoJson, bytestring
+    Build-depends: base>=3&&<5, bytestring
     ghc-options: -Wall -Odph
 
 executable json-wrap
diff --git a/json-unlines.hs b/json-unlines.hs
--- a/json-unlines.hs
+++ b/json-unlines.hs
@@ -1,15 +1,18 @@
-import Text.JSON.AttoJSON
-import qualified Data.ByteString.Char8 as S
-import Control.Arrow (second)
+{-# LANGUAGE OverloadedStrings #-}
+import qualified Data.ByteString.Char8 as L
+import System.Environment
 
+-- utility function
+getAllContents :: IO L.ByteString
+getAllContents =
+  do args <- getArgs
+     if null args
+      then L.getContents
+      else fmap L.concat . mapM file $ args
+  where file "-" = L.getContents
+        file xs  = L.readFile xs
+
 main :: IO ()
-main = S.putStr . showJSON          -- printing the output
-     . JSArray                      -- building the result
-     . map err                      -- error handling
-     . map (second parseJSON)       -- parsing a line
-     . zip [1::Integer ..]          -- number lines
-     . S.lines                      -- cut into a list of lines
-     =<< S.getContents              -- reading the input
-  where
-  err (ln, Left msg) = error $ "JSON parsing: (line "++show ln++"): "++msg
-  err (_,  Right x)  = x
+main = do
+  L.putStrLn . L.cons '[' . L.intercalate "\n," . L.lines =<< getAllContents
+  L.putStrLn "]"
