diff --git a/clit.cabal b/clit.cabal
--- a/clit.cabal
+++ b/clit.cabal
@@ -1,5 +1,5 @@
 name: clit
-version: 0.3.0.2
+version: 0.3.0.3
 cabal-version: >=1.10
 build-type: Simple
 license: BSD3
@@ -23,6 +23,11 @@
     type: git
     location: https://github.com/vmchale/command-line-tweeter
 
+flag llvm-fast
+    description:
+        Enable build with llvm backend
+    default: False
+
 library
     exposed-modules:
         Web.Tweet
@@ -51,11 +56,15 @@
         Web.Tweet.Sign
 
 executable tweet
+    
+    if flag(llvm-fast)
+        ghc-options: -threaded -rtsopts -with-rtsopts=-N -fllvm -optlo-O3 -O3
+    else
+        ghc-options: -threaded -rtsopts -with-rtsopts=-N
     main-is: Main.hs
     build-depends:
         base >=4.9.1.0 && <4.10,
-        clit >=0.3.0.2 && <0.4
+        clit >=0.3.0.3 && <0.4
     default-language: Haskell2010
     hs-source-dirs: app
-    ghc-options: -threaded -rtsopts -with-rtsopts=-N
 
diff --git a/src/Web/Tweet.hs b/src/Web/Tweet.hs
--- a/src/Web/Tweet.hs
+++ b/src/Web/Tweet.hs
@@ -30,6 +30,8 @@
     , urlString
     , getTimeline
     , showTimeline
+    , getProfile
+    , showProfile
     ) where
 
 import Network.HTTP.Client
@@ -99,7 +101,18 @@
     request <- signRequest filepath $ initialRequest { method = "POST" }
     responseInt request manager
 
-showTimeline count color filepath = replace "\\n" "\n" . replace "\\/" "/" . fromRight . (fmap (if color then displayTimelineColor else displayTimeline)) <$> getTimeline count filepath
+getProfile screenName count filepath = do
+    let requestString = "?screen_name=" ++ screenName ++ "&count=" ++ (show count)
+    manager <- newManager tlsManagerSettings
+    initialRequest <- parseRequest ("https://api.twitter.com/1.1/statuses/user_timeline.json" ++ requestString)
+    request <- signRequest filepath $ initialRequest { method = "GET"}
+    getTweets . BSL.unpack <$> responseBS request manager
+
+showProfile screenName count color filepath = showTweets color <$> getProfile screenName count filepath
+
+showTimeline count color filepath = showTweets color <$> getTimeline count filepath
+
+showTweets color = replace "\\n" "\n" . replace "\\/" "/" . fromRight . (fmap (if color then displayTimelineColor else displayTimeline))
     where fromRight (Right a) = a
 
 getTimeline count filepath = do
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
@@ -12,7 +12,7 @@
 -- | Data type for our program: one optional path to a credential file, (optionally) the number of tweets to make, the id of the status you're replying to, and a list of users you wish to mention.
 data Program = Program { subcommand :: Command , cred :: Maybe FilePath }
 
-data Command = Timeline { count :: Maybe Int , color :: Bool } | Send { tweets :: Maybe Int, replyId :: Maybe String, replyHandles :: Maybe [String] }
+data Command = Timeline { count :: Maybe Int , color :: Bool } | Send { tweets :: Maybe Int, replyId :: Maybe String, replyHandles :: Maybe [String] } | Profile { count :: Maybe Int , color :: Bool , screenName :: String }
 
 -- | query twitter to post stdin with no fancy options
 fromStdIn :: Int -> FilePath -> IO ()
@@ -55,13 +55,22 @@
 select (Program (Timeline Nothing True) (Just file)) = putStrLn =<< showTimeline 8 True file
 select (Program (Timeline (Just n) True) (Just file)) = putStrLn =<< showTimeline 8 True file
 select (Program (Timeline (Just n) True) Nothing) = putStrLn =<< showTimeline 8 True ".cred"
+select (Program (Profile (Just n) True name) (Just file)) = putStrLn =<< showProfile name n True file
+select (Program (Profile Nothing True name) (Just file)) = putStrLn =<< showProfile name 12 True file
+select (Program (Profile (Just n) True name) Nothing) = putStrLn =<< showProfile name n True ".cred"
+select (Program (Profile Nothing True name) Nothing) = putStrLn =<< showProfile name 12 True ".cred"
+select (Program (Profile (Just n) False name) (Just file)) = putStrLn =<< showProfile name n False file
+select (Program (Profile Nothing False name) (Just file)) = putStrLn =<< showProfile name 12 False file
+select (Program (Profile (Just n) False name) Nothing) = putStrLn =<< showProfile name n False ".cred"
+select (Program (Profile Nothing False name) Nothing) = putStrLn =<< showProfile name 12 False ".cred"
 
 -- | Parser to return a program datatype
 program :: Parser Program
 program = Program
     <$> (hsubparser
         (command "send" (info tweet (progDesc "Send a tweet"))
-        <> command "view" (info timeline (progDesc "Get your timeline"))))
+        <> command "view" (info timeline (progDesc "Get your timeline"))
+        <> command "user" (info profile (progDesc "Get a user's profile"))))
     <*> (optional $ strOption
         (long "cred"
         <> short 'c'
@@ -79,6 +88,21 @@
         (long "color"
         <> short 'l'
         <> help "Display timeline with colorized terminal output.")
+
+profile :: Parser Command
+profile = Profile
+    <$> (optional $ read <$> strOption
+        (long "count"
+        <> short 'n'
+        <> metavar "NUM"
+        <> help "Number of tweets to fetch, default 12"))
+    <*> switch
+        (long "color"
+        <> short 'l'
+        <> help "Whether to display profile with colorized terminal output")
+    <*> argument str
+        (metavar "SCREEN_NAME"
+        <> help "Screen name of user you want to view.")
 
 tweet :: Parser Command
 tweet = Send
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
@@ -16,7 +16,7 @@
 --toUnicode "\u00e9" = 
 
 displayTimelineColor :: Timeline -> String
-displayTimelineColor ((user,content):rest) = ((show . yellow . text $ user) <> ":\n    " <> content <> "\n") <> (displayTimeline rest)
+displayTimelineColor ((user,content):rest) = ((show . yellow . text $ user) <> ":\n    " <> content <> "\n") <> (displayTimelineColor rest)
 displayTimelineColor [] = []
 
 displayTimeline :: Timeline -> String
