diff --git a/main/ntrip-client.hs b/main/ntrip-client.hs
new file mode 100644
--- /dev/null
+++ b/main/ntrip-client.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE DeriveGeneric     #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+import BasicPrelude         hiding (mapM_)
+import Data.ByteString
+import Data.Conduit.List
+import Network.Ntrip.Client
+import Options.Generic
+import System.IO
+
+data Args = Args
+  { host     :: ByteString
+  , port     :: Maybe Int
+  , path     :: ByteString
+  , user     :: ByteString
+  , password :: ByteString
+  } deriving (Show, Generic)
+
+instance ParseRecord Args
+
+output :: ByteString -> IO ()
+output bs = do
+  hPut stdout bs
+  hFlush stdout
+
+main :: IO ()
+main = do
+  args <- getRecord "NTRIP Client"
+  runNtrip
+    (host args)
+    (fromMaybe 2101 $ port args)
+    (path args)
+    (user args)
+    (password args)
+    sourceNull
+    (mapM_ output)
+
diff --git a/ntrip-client.cabal b/ntrip-client.cabal
--- a/ntrip-client.cabal
+++ b/ntrip-client.cabal
@@ -1,5 +1,5 @@
 name:                  ntrip-client
-version:               0.1.0
+version:               0.1.1
 synopsis:              NTRIP client.
 description:           Networked Transport of RTCM via Internet Protocol client.
 license:               BSD3
@@ -15,13 +15,25 @@
   exposed-modules:     Network.Ntrip.Client
   ghc-options:         -Wall
   default-language:    Haskell2010
-  build-depends:       async,
-                       async,
-                       attoparsec,
-                       base >= 4.7 && < 5,
-                       base64-bytestring,
-                       basic-prelude,
-                       case-insensitive,
-                       conduit,
-                       conduit-extra,
-                       http-types
+  build-depends:       async
+                     , attoparsec
+                     , base >= 4.7 && < 5
+                     , base64-bytestring
+                     , basic-prelude
+                     , case-insensitive
+                     , conduit
+                     , conduit-extra
+                     , http-types
+
+executable ntrip-client
+  hs-source-dirs:      main
+  main-is:             ntrip-client.hs
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall -O2
+  default-language:    Haskell2010
+  build-depends:       base
+                     , basic-prelude
+                     , bytestring
+                     , conduit
+                     , ntrip-client
+                     , optparse-generic
+                     , optparse-generic
diff --git a/src/Network/Ntrip/Client.hs b/src/Network/Ntrip/Client.hs
--- a/src/Network/Ntrip/Client.hs
+++ b/src/Network/Ntrip/Client.hs
@@ -32,8 +32,8 @@
 
 parseNtrip :: Parser (ByteString, Status)
 parseNtrip = do
-  format   <- parseFormat
-  code     <- parseCode
+  format  <- parseFormat
+  code    <- parseCode
   message <- parseMessage
   return (format, Status code message)
   where
