diff --git a/load-env.cabal b/load-env.cabal
--- a/load-env.cabal
+++ b/load-env.cabal
@@ -1,5 +1,5 @@
 Name:                   load-env
-Version:                0.0.5
+Version:                0.1.0
 Author:                 Pat Brisbin <pbrisbin@gmail.com>
 Maintainer:             Pat Brisbin <pbrisbin@gmail.com>
 License:                BSD3
diff --git a/src/LoadEnv.hs b/src/LoadEnv.hs
--- a/src/LoadEnv.hs
+++ b/src/LoadEnv.hs
@@ -22,11 +22,11 @@
 -- > FOO='bar'
 --
 -- Declarations may optionally be preceded by @export@, which will be ignored.
--- Lines beginning with @#@ and blank lines are ignored. Trailing whitespace is
--- ignored. Quotes inside quoted values or spaces in unquoted values must be
--- escaped with a backlash. All else will result in a parse error being printed
--- to @stdout@.
+-- Trailing whitespace is ignored. Quotes inside quoted values or spaces in
+-- unquoted values must be escaped with a backlash.
 --
+-- Invalid lines are silently ignored.
+--
 -- If you wish to specify your own file, use @'loadEnvFrom'@. If you wish to
 -- pass your own string or work with the parse result directly, use the
 -- lower-level functions available in @"LoadEnv.Parse"@.
@@ -38,5 +38,5 @@
 loadEnvFrom fp = do
     e <- doesFileExist fp
 
-    when e $ parseFromFile parseEnvironment fp >>= either
-        (putStrLn . show) (mapM_ $ uncurry setEnv)
+    when e $ parseFromFile parseEnvironment fp >>=
+        either print (mapM_ $ uncurry setEnv)
diff --git a/src/LoadEnv/Parse.hs b/src/LoadEnv/Parse.hs
--- a/src/LoadEnv/Parse.hs
+++ b/src/LoadEnv/Parse.hs
@@ -5,7 +5,8 @@
     , parseVariable
     ) where
 
-import Control.Applicative ((<$>), (<*>))
+import Control.Applicative ((<$>))
+import Control.Monad (void)
 import Data.Maybe (catMaybes)
 
 import Text.Parsec
@@ -15,45 +16,38 @@
 type Variable = (String, String)
 
 parseEnvironment :: Parser Environment
-parseEnvironment = fmap catMaybes $ many1 parseLine
+parseEnvironment = catMaybes <$> many parseLine
 
 parseLine :: Parser (Maybe Variable)
-parseLine = try (fmap Just $ parseVariable) <|> ignoreLine
-
-ignoreLine :: Parser (Maybe Variable)
-ignoreLine = (commentLine <|> blankLine) >> return Nothing
-
-commentLine :: Parser ()
-commentLine = do
-    _ <- spaces
-    _ <- char '#'
-    _ <- manyTill anyToken (char '\n')
+parseLine = possibly parseVariable
 
-    return ()
+possibly :: Parser a -> Parser (Maybe a)
+possibly p = try (fmap Just p) <|> ignored
 
-blankLine :: Parser ()
-blankLine = many1 space >> return ()
+  where
+    ignored = do
+        void $ manyTill anyToken newline
+        return Nothing
 
 parseVariable :: Parser Variable
-parseVariable = (,) <$> identifier <*> value
-
-identifier :: Parser String
-identifier = do
+parseVariable = do
     optional $ between spaces spaces $ string "export"
 
-    i <- many1 $ letter <|> char '_'
-    _ <- char '='
+    i <- identifier
+    void $ char '='
 
-    return i
+    v <- value
+    void $ many $ oneOf " \t"
+    void $ newline
 
-value :: Parser String
-value = do
-    v <- quotedValue <|> unquotedValue <|> return ""
-    _ <- many $ oneOf " \t"
-    _ <- char '\n'
+    return (i, v)
 
-    return v
+identifier :: Parser String
+identifier = many1 $ letter <|> char '_'
 
+value :: Parser String
+value = quotedValue <|> unquotedValue <|> return ""
+
 quotedValue :: Parser String
 quotedValue = do
     q <- oneOf "'\""
@@ -61,7 +55,7 @@
     manyTill (try (escaped q) <|> anyToken) (char q)
 
 unquotedValue :: Parser String
-unquotedValue = many1 $ try (escaped ' ') <|> (noneOf "\"' \n")
+unquotedValue = many1 $ try (escaped ' ') <|> noneOf "\"' \n"
 
 escaped :: Char -> Parser Char
 escaped c = string ("\\" ++ [c]) >> return c
