diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -115,6 +115,14 @@
 
 to view your own timeline.
 
+### GHCi integration
+
+You can define the following in your `~/.ghci`
+
+```haskell
+:def tweet (\str -> pure $ ":! tweet send \"" ++ str ++ "\"")
+```
+
 ### Completions
 
 The directory `bash/` has a `mkCompletions` script to allow command completions for your convenience.
diff --git a/cabal.project.local b/cabal.project.local
new file mode 100644
--- /dev/null
+++ b/cabal.project.local
@@ -0,0 +1,5 @@
+with-compiler: ghc-8.2.1
+optimization: 2
+documentation: True
+haddock-hoogle: True
+haddock-internal: True
diff --git a/src/Web/Tweet/API/Internal.hs b/src/Web/Tweet/API/Internal.hs
--- a/src/Web/Tweet/API/Internal.hs
+++ b/src/Web/Tweet/API/Internal.hs
@@ -24,6 +24,10 @@
 showTimeline :: Int -> Bool -> FilePath -> IO String
 showTimeline count color = (fmap (showTweets color)) . getTimeline count
 
+-- | Display a user timeline, filtering out tweets
+showNoReplies :: String -> Int -> Bool -> FilePath -> IO String
+showNoReplies sn count color = (fmap (showTweets color . fmap filterReplies)) . getProfile sn count
+
 -- | Display user timeline in color, as appropriate
 showTweets :: Bool -> Either (ParseError Char Void) Timeline -> String
 showTweets color = (either show id) . (fmap (if color then displayTimelineColor else displayTimeline))
diff --git a/src/Web/Tweet/Exec.hs b/src/Web/Tweet/Exec.hs
--- a/src/Web/Tweet/Exec.hs
+++ b/src/Web/Tweet/Exec.hs
@@ -19,7 +19,7 @@
 -- TODO add boolean option to show ids alongside tweets
 data Command = Timeline { count :: Maybe Int }
     | SendInput { tweetInputs :: Maybe Int, replyId :: Maybe String, replyh :: Maybe [String] }
-    | Profile { count :: Maybe Int , screenName'' :: Maybe String }
+    | Profile { count :: Maybe Int , screenName'' :: Maybe String, withReplies :: Bool }
     | Mentions { count :: Maybe Int }
     | Markov { screenName' :: String }
     | Send { tweets :: Maybe Int , replyId :: Maybe String , replyh :: Maybe [String] , userInput :: String }
@@ -80,7 +80,8 @@
 selectCommand (SendInput maybeNum Nothing (Just h)) _ file = threadStdIn h Nothing (fromMaybe 15 maybeNum) file
 selectCommand (Timeline maybeNum) c file = putStrLn =<< showTimeline (fromMaybe 11 maybeNum) c file
 selectCommand (Mentions maybeNum) c file = putStrLn =<< showTweets c <$> mentions (fromMaybe 11 maybeNum) file
-selectCommand (Profile maybeNum n) c file = putStrLn =<< showProfile (fromMaybe mempty n) (fromMaybe 11 maybeNum) c file
+selectCommand (Profile maybeNum n False) c file = putStrLn =<< showProfile (fromMaybe mempty n) (fromMaybe 11 maybeNum) c file
+selectCommand (Profile maybeNum n True) c file = putStrLn =<< showNoReplies (fromMaybe mempty n) (fromMaybe 11 maybeNum) c file
 selectCommand (Sort n maybeNum False) c file = putStrLn =<< showBest' n (fromMaybe 11 maybeNum) c file
 selectCommand (Sort n maybeNum True) c file = putStrLn =<< showBest n (fromMaybe 11 maybeNum) c file
 selectCommand (List maybeNum n) c file = putStrLn =<< showFavorites (fromMaybe 11 maybeNum) n c file
@@ -250,6 +251,10 @@
         <> metavar "NUM"
         <> help "Number of tweetInputs to fetch, default 12"))
     <*> optional user
+    <*> switch (
+           long "no-replies"
+        <> short 'r'
+        <> help "Don't display replies.")
 
 -- | Parser for the mention subcommand
 mentionsParser :: Parser Command
diff --git a/src/Web/Tweet/Parser.hs b/src/Web/Tweet/Parser.hs
--- a/src/Web/Tweet/Parser.hs
+++ b/src/Web/Tweet/Parser.hs
@@ -4,6 +4,7 @@
 module Web.Tweet.Parser ( parseTweet
                         , getData ) where
 
+import Control.Composition ((.*))
 import qualified Data.ByteString as BS
 import Text.Megaparsec.Byte
 import Text.Megaparsec.Byte.Lexer as L
@@ -55,7 +56,6 @@
     case contents of
         (Just _) -> pure <$> getData
         _ -> pure Nothing
-    
 
 -- | Skip a set of square brackets []
 skipInsideBrackets :: Parser ()
@@ -65,10 +65,8 @@
 skipMentions :: Parser ()
 skipMentions = do
     many $ try $ anyChar >> notFollowedBy (string "\"user_mentions\":")
-    char ','
-    string "\"user_mentions\":"
+    string ",\"user_mentions\":"
     skipInsideBrackets
-    pure ()
 
 -- | Throw out input until we get to a relevant tag.
 filterStr :: String -> Parser String
@@ -104,24 +102,18 @@
 
 -- | Parse a newline
 newlineChar :: Parser Char
-newlineChar = do
-    string "\\n"
-    pure '\n'
+newlineChar = string "\\n" >> pure '\n'
 
 -- | Parser for unicode; twitter will give us something like "/u320a"
 unicodeChar :: Parser Char
-unicodeChar = do
-    string "\\u"
-    num <- fromHex . filterEmoji . BS.pack . map (fromIntegral . fromEnum) <$> count 4 anyChar
-    pure . toEnum . fromIntegral $ num
+unicodeChar = toEnum . fromIntegral . f <$> go
+    where go = string "\\u" >> count 4 anyChar
+          f = fromHex . filterEmoji . BS.pack . fmap (fromIntegral . fromEnum) 
 
 emojiChar :: Parser Char
-emojiChar = do
-    _ <- string "\\ud"
-    str1 <- count 3 anyChar
-    str2 <- string "\\ud" >> count 3 anyChar
-    let num = decodeUtf16 $ "d" <> str1 <> "d" <> str2
-    pure . T.head $ num
+emojiChar = go a
+    where a = string "\\ud" >> count 3 anyChar
+          go = (<*>) =<< (((T.head . decodeUtf16) .* ((<>) . (<> "d") . ("d" <>))) <$>)
 
 decodeUtf16 :: String -> T.Text
 decodeUtf16 = TE.decodeUtf16BE . BS.concat . go
@@ -147,9 +139,7 @@
 
 -- | Parse escaped characters
 specialChar :: Char -> Parser Char
-specialChar c = do
-    string $ "\\" <> pure c
-    pure c
+specialChar c = string ("\\" <> pure c) >> pure c
 
 -- | Convert a string of four hexadecimal digits to an integer.
 fromHex :: BS.ByteString -> Integer
diff --git a/src/Web/Tweet/Utils.hs b/src/Web/Tweet/Utils.hs
--- a/src/Web/Tweet/Utils.hs
+++ b/src/Web/Tweet/Utils.hs
@@ -9,7 +9,9 @@
   , lineByKey
   , bird
   , getConfigData
-  , filterQuotes ) where
+  , filterQuotes
+  , filterReplies
+  ) where
 
 import           Control.Composition
 import           Control.Lens                hiding (noneOf)
diff --git a/stack.yaml b/stack.yaml
deleted file mode 100644
--- a/stack.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# This file was automatically generated by 'stack init'
-#
-# Some commonly used options have been documented as comments in this file.
-# For advanced use and comprehensive documentation of the format, please see:
-# https://docs.haskellstack.org/en/stable/yaml_configuration/
-
-# Resolver to choose a 'specific' stackage snapshot or a compiler version.
-# A snapshot resolver dictates the compiler version and the set of packages
-# to be used for project dependencies. For example:
-#
-# resolver: lts-3.5
-# resolver: nightly-2015-09-21
-# resolver: ghc-7.10.2
-# resolver: ghcjs-0.1.0_ghc-7.10.2
-# resolver:
-#  name: custom-snapshot
-#  location: "./custom-snapshot.yaml"
-resolver: lts-9.3
-
-# User packages to be built.
-# Various formats can be used as shown in the example below.
-#
-# packages:
-# - some-directory
-# - https://example.com/foo/bar/baz-0.0.2.tar.gz
-# - location:
-#    git: https://github.com/commercialhaskell/stack.git
-#    commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
-# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a
-#   extra-dep: true
-#  subdirs:
-#  - auto-update
-#  - wai
-#
-# A package marked 'extra-dep: true' will only be built if demanded by a
-# non-dependency (i.e. a user package), and its test suites and benchmarks
-# will not be run. This is useful for tweaking upstream packages.
-packages:
-- .
-# Dependency packages to be pulled from upstream that are not in the resolver
-# (e.g., acme-missiles-0.3)
-extra-deps:
-- composition-prelude-0.1.0.4
-- megaparsec-6.1.1
-
-# Override default flag values for local packages and extra-deps
-flags: {}
-
-# Extra package databases containing global packages
-extra-package-dbs: []
-
-# Control whether we use the GHC we find on the path
-# system-ghc: true
-#
-# Require a specific version of stack, using version ranges
-# require-stack-version: -any # Default
-# require-stack-version: ">=1.5"
-#
-# Override the architecture used by stack, especially useful on Windows
-# arch: i386
-# arch: x86_64
-#
-# Extra directories used by stack for building
-# extra-include-dirs: [/path/to/dir]
-# extra-lib-dirs: [/path/to/dir]
-#
-# Allow a newer minor version of GHC than the snapshot specifies
-# compiler-check: newer-minor
diff --git a/tweet-hs.cabal b/tweet-hs.cabal
--- a/tweet-hs.cabal
+++ b/tweet-hs.cabal
@@ -1,5 +1,5 @@
 name:                tweet-hs
-version:             1.0.1.7
+version:             1.0.1.8
 synopsis:            Command-line tool for twitter
 description:         a Command Line Interface Tweeter
 homepage:            https://github.com/vmchale/command-line-tweeter#readme
@@ -11,7 +11,7 @@
 category:            Web
 build-type:          Simple
 stability:           stable
-extra-source-files:  README.md, stack.yaml, bash/mkCompletions, test/data
+extra-source-files:  README.md, cabal.project.local, bash/mkCompletions, test/data
 cabal-version:       >=1.10
 
 Flag llvm-fast {
