diff --git a/imap.cabal b/imap.cabal
--- a/imap.cabal
+++ b/imap.cabal
@@ -2,7 +2,7 @@
 -- see http://haskell.org/cabal/users-guide/
 
 name:                imap
-version:             0.3.0.2
+version:             0.3.0.3
 synopsis:            An efficient IMAP client library, with SSL and streaming
 license:             BSD3
 license-file:        LICENSE
@@ -118,7 +118,7 @@
                         either ==  4.4.*,
                         hslogger == 1.2.*,
                         transformers == 0.5.*,
-                        list-t == 1,
+                        list-t == 1.0.0.*,
                         derive == 2.6.*,
                         stm-delay == 0.1.*,
                         exceptions == 0.8.*,
@@ -154,7 +154,7 @@
                         either ==  4.4.*,
                         hslogger == 1.2.*,
                         transformers == 0.5.*,
-                        list-t == 1,
+                        list-t == 1.0.0.*,
                         derive == 2.6.*,
                         stm-delay == 0.1.*,
                         exceptions == 0.8.*,
diff --git a/src/Network/IMAP.hs b/src/Network/IMAP.hs
--- a/src/Network/IMAP.hs
+++ b/src/Network/IMAP.hs
@@ -206,11 +206,13 @@
 
 select :: (MonadPlus m, MonadIO m, Universe m) => IMAPConnection ->
   T.Text -> m CommandResult
-select = oneParamCommand "SELECT"
+select conn mboxName = oneParamCommand "SELECT" conn escapedMailbox
+  where escapedMailbox = T.concat ["\"", mboxName, "\""]
 
 examine :: (MonadPlus m, MonadIO m, Universe m) => IMAPConnection ->
   T.Text -> m CommandResult
-examine = oneParamCommand "EXAMINE"
+examine conn mboxName = oneParamCommand "EXAMINE" conn escapedMailbox
+  where escapedMailbox = T.concat ["\"", mboxName, "\""]
 
 create :: (MonadPlus m, MonadIO m, Universe m) => IMAPConnection ->
   T.Text -> m CommandResult
@@ -347,6 +349,5 @@
 
 oneParamCommand :: (MonadPlus m, MonadIO m, Universe m) => T.Text ->
   IMAPConnection -> T.Text -> m CommandResult
-oneParamCommand commandName conn mailboxName = sendCommand conn wholeCommand
-  where wholeCommand = encodeUtf8 $ T.intercalate " " [commandName, escapedMailbox]
-        escapedMailbox = T.concat ["\"", mailboxName, "\""]
+oneParamCommand commandName conn params = sendCommand conn wholeCommand
+  where wholeCommand = encodeUtf8 $ T.intercalate " " [commandName, params]
diff --git a/src/Network/IMAP/Parsers/Fetch.hs b/src/Network/IMAP/Parsers/Fetch.hs
--- a/src/Network/IMAP/Parsers/Fetch.hs
+++ b/src/Network/IMAP/Parsers/Fetch.hs
@@ -2,7 +2,7 @@
 
 import           Network.IMAP.Types
 import           Network.IMAP.Parsers.Utils
-import           Network.IMAP.Parsers.Untagged (parseFlags)
+import           Network.IMAP.Parsers.Untagged (parseFlags, parseExtension)
 
 import           Data.Attoparsec.ByteString
 import qualified Data.Attoparsec.ByteString as AP
@@ -39,7 +39,8 @@
                   ((string "BODY[" <|> string "RFC822.HEADER"
                    <|> string "RFC822.TEXT" <|> string "RFC822") *> parseBody) <|>
                   parseNumber UID "UID" "" <|>
-                  Right <$> parseBodyStructure
+                  (Right <$> parseBodyStructure) <|>
+                  parseExtension
 
       (nextRes:) <$> (AP.anyWord8 *> parseSpecifiers)
 
diff --git a/src/Network/IMAP/Parsers/Untagged.hs b/src/Network/IMAP/Parsers/Untagged.hs
--- a/src/Network/IMAP/Parsers/Untagged.hs
+++ b/src/Network/IMAP/Parsers/Untagged.hs
@@ -19,6 +19,18 @@
   contents <- AP.takeWhile (/= '\r')
   return . OKResult . decodeUtf8 $ contents
 
+parseExtension :: Parser (Either ErrorMessage UntaggedResult)
+parseExtension = do
+  extensionName <- AP.takeWhile1 isAtomChar
+  char ' '
+
+  payload <- ((liftA ExtLabels <$> Right) <$>
+              (char '(' *> AP.sepBy parseLabel (char ' ') <* char ')')
+             )
+                <|>
+             (liftA ExtInt <$> parseNumber id "" "")
+  return $! (Extension extensionName) <$> payload
+
 parseFlag :: Parser Flag
 parseFlag = do
   char '\\'
diff --git a/src/Network/IMAP/Parsers/Utils.hs b/src/Network/IMAP/Parsers/Utils.hs
--- a/src/Network/IMAP/Parsers/Utils.hs
+++ b/src/Network/IMAP/Parsers/Utils.hs
@@ -9,6 +9,7 @@
 import qualified Data.ByteString.Char8 as BSC
 import           Data.Either.Combinators (rightToMaybe)
 import           Control.Monad (liftM)
+import           Control.Applicative ((<|>))
 
 import           Data.Set (Set)
 import qualified Data.Set as Set
@@ -54,13 +55,14 @@
 nilOrValue :: Parser a -> Parser (Maybe a)
 nilOrValue parser = rightToMaybe <$> AP.eitherP (string "NIL") parser
 
-parseQuotedText :: Parser T.Text
-parseQuotedText = do
-  char '"'
-  date <- AP.takeWhile1 (/= '"')
-  char '"'
+parseQuoted :: Parser BSC.ByteString
+parseQuoted =
+  (string "\\\"" *> (BSC.init <$> AP.takeWhile1 (/= '"')) <* char '"')
+    <|>
+  (char '"' *> AP.takeWhile (/= '"') <* char '"')
 
-  return . decodeUtf8 $ date
+parseQuotedText :: Parser T.Text
+parseQuotedText = decodeUtf8 <$> parseQuoted
 
 parseNameAttribute :: Parser NameAttribute
 parseNameAttribute = do
@@ -113,3 +115,8 @@
     else return BSC.empty
 
   return $ liftM constructor (toInt parsedNumber)
+
+parseLabel :: Parser BSC.ByteString
+parseLabel = parseQuoted <|>
+             (char '\\' *> AP.takeWhile1 isAtomChar) <|>
+             (AP.takeWhile1 isAtomChar)
diff --git a/src/Network/IMAP/Types.hs b/src/Network/IMAP/Types.hs
--- a/src/Network/IMAP/Types.hs
+++ b/src/Network/IMAP/Types.hs
@@ -176,7 +176,11 @@
                     | Unknown BSC.ByteString -- ^ An unsupported value
                     | Body BSC.ByteString -- ^ Message body, or headers
                     | BodyStructure BSC.ByteString -- ^ An unparsed bodystructure
+                    | Extension BSC.ByteString ExtensionPayload -- ^ A format extension
                     deriving (Show, Eq)
+
+data ExtensionPayload = ExtInt Integer | ExtLabels [BSC.ByteString]
+  deriving (Show, Eq)
 
 data NameAttribute = Noinferiors
                    | Noselect
