diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,10 +1,23 @@
+0.5 (2015-11-5)
+---------------
+
+ - No longer render Bcc field when rendering messages (thanks Dan Aloni
+   <alonid@gmail.com>)
+ - Implemented IDLE command (thanks Alexander Inyukhin
+   <shurick@sectorb.msk.ru>)
+ - Added stream wait function (bsWaitForInput field of type BSStream)
+   (thanks Alexander Inyukhin <shurick@sectorb.msk.ru>)
+ - SMTP: RCPT also includes Cc and Bcc lists rather than just To list
+   (thanks Author: Dan Aloni <alonid@gmail.com>)
+
 0.4.4 -> 0.4.5 (2015-06-18)
+---------------------------
 
  - IMAP: select command must quote the mailbox name
    (see https://github.com/jtdaugherty/HaskellNet/issues/35)
 
 0.4.3 -> 0.4.4 (2015-04-11)
---------------
+---------------------------
 
  - Fix a bug in IMAP Parser for listing Mboxes
    (see https://github.com/jtdaugherty/HaskellNet/issues/34)
diff --git a/HaskellNet.cabal b/HaskellNet.cabal
--- a/HaskellNet.cabal
+++ b/HaskellNet.cabal
@@ -4,7 +4,7 @@
                 SMTP, and IMAP protocols.  NOTE: this package will be
                 split into smaller, protocol-specific packages in the
                 future.
-Version:        0.4.5
+Version:        0.5
 Copyright:      (c) 2006 Jun Mukai
 Author:         Jun Mukai
 Maintainer:	Jonathan Daugherty <cygnus@foobox.com>,
diff --git a/src/Network/HaskellNet/BSStream.hs b/src/Network/HaskellNet/BSStream.hs
--- a/src/Network/HaskellNet/BSStream.hs
+++ b/src/Network/HaskellNet/BSStream.hs
@@ -28,6 +28,8 @@
              -- ^Close the stream.
              , bsIsOpen :: IO Bool
              -- ^Is the stream open?
+             , bsWaitForInput :: Int -> IO Bool
+             -- ^Is data available?
              }
 
 -- |Build a byte string stream which operates on a 'Handle'.
@@ -41,4 +43,5 @@
                  op <- hIsOpen h
                  if op then (hClose h) else return ()
              , bsIsOpen = hIsOpen h
+             , bsWaitForInput = hWaitForInput h
              }
diff --git a/src/Network/HaskellNet/IMAP.hs b/src/Network/HaskellNet/IMAP.hs
--- a/src/Network/HaskellNet/IMAP.hs
+++ b/src/Network/HaskellNet/IMAP.hs
@@ -12,6 +12,7 @@
       -- ** selected state commands
     , check, close, expunge
     , search, store, copy
+    , idle
       -- * fetch commands
     , fetch, fetchHeader, fetchSize, fetchHeaderFields, fetchHeaderFieldsNot
     , fetchFlags, fetchR, fetchByString, fetchByStringR
@@ -193,6 +194,26 @@
 ----------------------------------------------------------------------
 -- IMAP commands
 --
+
+idle :: IMAPConnection -> Int -> IO ()
+idle conn timeout =
+    do
+        (buf',num) <- sendCommand' conn "IDLE"
+        buf <-
+            if BS.take 2 buf' == BS.pack "+ "
+                then do
+                    _ <- bsWaitForInput (stream conn) timeout
+                    bsPutCrLf (stream conn) $ BS.pack "DONE"
+                    getResponse $ stream conn
+                else
+                    return buf'
+        let (resp, mboxUp, value) = eval pNone (show6 num) buf
+        case resp of
+         OK _ _        -> do mboxUpdate conn mboxUp
+                             return value
+         NO _ msg      -> fail ("NO: " ++ msg)
+         BAD _ msg     -> fail ("BAD: " ++ msg)
+         PREAUTH _ msg -> fail ("preauth: " ++ msg)
 
 noop :: IMAPConnection -> IO ()
 noop conn = sendCommand conn "NOOP" pNone
diff --git a/src/Network/HaskellNet/SMTP.hs b/src/Network/HaskellNet/SMTP.hs
--- a/src/Network/HaskellNet/SMTP.hs
+++ b/src/Network/HaskellNet/SMTP.hs
@@ -347,10 +347,11 @@
 sendMimeMail2 :: Mail -> SMTPConnection -> IO ()
 sendMimeMail2 mail con = do
     let (Address _ from) = mailFrom mail
-        tos = map (T.unpack . addressEmail) $ mailTo mail
-    when (null tos) $ fail "no receiver specified."
-    renderedMail <- renderMail' mail
-    sendMail (T.unpack from) tos (lazyToStrict renderedMail) con
+        recps = map (T.unpack . addressEmail)
+                     $ (mailTo mail ++ mailCc mail ++ mailBcc mail)
+    when (null recps) $ fail "no receiver specified."
+    renderedMail <- renderMail' $ mail { mailBcc = [] }
+    sendMail (T.unpack from) recps (lazyToStrict renderedMail) con
 
 -- haskellNet uses strict bytestrings
 -- TODO: look at making haskellnet lazy
