diff --git a/src/Network/WebSockets/Monad.hs b/src/Network/WebSockets/Monad.hs
--- a/src/Network/WebSockets/Monad.hs
+++ b/src/Network/WebSockets/Monad.hs
@@ -32,7 +32,6 @@
 import Control.Monad.Reader (ReaderT, ask, runReaderT)
 import Control.Monad.Trans (MonadIO, lift, liftIO)
 import Data.Foldable (forM_)
-import System.Random (newStdGen)
 
 import Blaze.ByteString.Builder (Builder)
 import Data.ByteString (ByteString)
@@ -141,8 +140,7 @@
                    -> Iteratee ByteString IO a
 runWebSocketsWith' opts proto ws outIter = do
     -- Create sink with a random source
-    gen <- liftIO newStdGen
-    let sinkIter = encodeMessages proto gen =$ builderToByteString =$ outIter
+    let sinkIter = encodeMessages proto =$ builderToByteString =$ outIter
     sink <- Sink <$> liftIO (newMVar sinkIter)
 
     let sender = makeBuilderSender outIter
diff --git a/src/Network/WebSockets/Protocol.hs b/src/Network/WebSockets/Protocol.hs
--- a/src/Network/WebSockets/Protocol.hs
+++ b/src/Network/WebSockets/Protocol.hs
@@ -12,7 +12,6 @@
     ) where
 
 import Blaze.ByteString.Builder (Builder)
-import System.Random (RandomGen)
 import qualified Data.ByteString as B
 import qualified Data.Enumerator as E
 
@@ -39,9 +38,8 @@
 
     -- | Encodes messages to binary 'Builder's. Takes a random source so it is
     -- able to do masking of frames (needed in some cases).
-    encodeMessages  :: (Monad m, RandomGen g)
+    encodeMessages  :: Monad m
                     => p
-                    -> g
                     -> E.Enumeratee (Message p) Builder m a
 
     -- | Decodes messages from binary 'B.ByteString's.
diff --git a/src/Network/WebSockets/Protocol/Hybi00.hs b/src/Network/WebSockets/Protocol/Hybi00.hs
--- a/src/Network/WebSockets/Protocol/Hybi00.hs
+++ b/src/Network/WebSockets/Protocol/Hybi00.hs
@@ -17,7 +17,7 @@
     version        (Hybi00 p)   = version p
     headerVersions (Hybi00 p)   = headerVersions p
     supported      (Hybi00 p) h = supported p h
-    encodeMessages (Hybi00 p) g = (EL.map castMessage =$) . encodeMessages p g
+    encodeMessages (Hybi00 p)   = (EL.map castMessage =$) . encodeMessages p
     decodeMessages (Hybi00 p)   = (decodeMessages p =$) . EL.map castMessage
     finishRequest  (Hybi00 p)   = finishRequest p
     implementations             = [Hybi00 Hybi10_, Hybi00 Hybi00_]
diff --git a/src/Network/WebSockets/Protocol/Hybi00/Internal.hs b/src/Network/WebSockets/Protocol/Hybi00/Internal.hs
--- a/src/Network/WebSockets/Protocol/Hybi00/Internal.hs
+++ b/src/Network/WebSockets/Protocol/Hybi00/Internal.hs
@@ -30,7 +30,7 @@
     version         Hybi00_   = "hybi00"
     headerVersions  Hybi00_   = []  -- The client will elide it
     supported       Hybi00_ h = getSecWebSocketVersion h == Nothing
-    encodeMessages  Hybi00_ _ = EL.map encodeMessage
+    encodeMessages  Hybi00_   = EL.map encodeMessage
     decodeMessages  Hybi00_   = E.sequence (A.iterParser parseMessage)
     finishRequest   Hybi00_   = handshakeHybi00
     implementations           = [Hybi00_]
diff --git a/src/Network/WebSockets/Protocol/Hybi10.hs b/src/Network/WebSockets/Protocol/Hybi10.hs
--- a/src/Network/WebSockets/Protocol/Hybi10.hs
+++ b/src/Network/WebSockets/Protocol/Hybi10.hs
@@ -15,7 +15,7 @@
     version        (Hybi10 p)   = version p
     headerVersions (Hybi10 p)   = headerVersions p
     supported      (Hybi10 p) h = supported p h
-    encodeMessages (Hybi10 p) g = (EL.map castMessage =$) . encodeMessages p g
+    encodeMessages (Hybi10 p)   = (EL.map castMessage =$) . encodeMessages p
     decodeMessages (Hybi10 p)   = (decodeMessages p =$) . EL.map castMessage
     finishRequest  (Hybi10 p)   = finishRequest p
     implementations             = [Hybi10 Hybi10_]
diff --git a/src/Network/WebSockets/Protocol/Hybi10/Internal.hs b/src/Network/WebSockets/Protocol/Hybi10/Internal.hs
--- a/src/Network/WebSockets/Protocol/Hybi10/Internal.hs
+++ b/src/Network/WebSockets/Protocol/Hybi10/Internal.hs
@@ -8,7 +8,6 @@
 import Data.Bits ((.&.), (.|.))
 import Data.Maybe (maybeToList)
 import Data.Monoid (mempty, mappend, mconcat)
-import System.Random (RandomGen)
 
 import Data.Attoparsec (anyWord8)
 import Data.Binary.Get (runGet, getWord16be, getWord64be)
@@ -38,7 +37,7 @@
 instance Protocol Hybi10_ where
     version         Hybi10_ = "hybi10"
     headerVersions  Hybi10_ = ["13", "8", "7"]
-    encodeMessages  Hybi10_ = EL.mapAccum encodeMessageHybi10
+    encodeMessages  Hybi10_ = EL.map encodeMessageHybi10
     decodeMessages  Hybi10_ = decodeMessagesHybi10
     finishRequest   Hybi10_ = handshakeHybi10
     implementations         = [Hybi10_]
@@ -46,11 +45,10 @@
 instance TextProtocol Hybi10_
 instance BinaryProtocol Hybi10_
 
-encodeMessageHybi10 :: RandomGen g => g -> Message p -> (g, B.Builder)
-encodeMessageHybi10 gen msg = (gen', builder)
+encodeMessageHybi10 :: Message p -> B.Builder
+encodeMessageHybi10 msg = builder
   where
-    (mask, gen') = randomMask gen
-    builder      = encodeFrameHybi10 mask $ case msg of
+    builder = encodeFrameHybi10 $ case msg of
         (ControlMessage (Close pl)) -> Frame True CloseFrame pl
         (ControlMessage (Ping pl))  -> Frame True PingFrame pl
         (ControlMessage (Pong pl))  -> Frame True PongFrame pl
@@ -58,10 +56,10 @@
         (DataMessage (Binary pl))   -> Frame True BinaryFrame pl
 
 -- | Encode a frame
-encodeFrameHybi10 :: Mask -> Frame -> B.Builder
-encodeFrameHybi10 mask f = B.fromWord8 byte0 `mappend`
-    B.fromWord8 byte1 `mappend` len `mappend` maskbytes `mappend`
-    B.fromLazyByteString (maskPayload mask (framePayload f))
+encodeFrameHybi10 :: Frame -> B.Builder
+encodeFrameHybi10 f = B.fromWord8 byte0 `mappend`
+    B.fromWord8 byte1 `mappend` len `mappend`
+    B.fromLazyByteString (framePayload f)
   where
     byte0  = fin .|. opcode
     fin    = if frameFin f then 0x80 else 0x00
@@ -73,11 +71,7 @@
         PingFrame         -> 0x09
         PongFrame         -> 0x0a
 
-    (maskflag, maskbytes) = case mask of
-        Nothing -> (0x00, mempty)
-        Just m  -> (0x80, B.fromByteString m)
-
-    byte1 = maskflag .|. lenflag
+    byte1 = lenflag
     len'  = BL.length (framePayload f)
     (lenflag, len)
         | len' < 126     = (fromIntegral len', mempty)
diff --git a/src/Network/WebSockets/Protocol/Hybi10/Mask.hs b/src/Network/WebSockets/Protocol/Hybi10/Mask.hs
--- a/src/Network/WebSockets/Protocol/Hybi10/Mask.hs
+++ b/src/Network/WebSockets/Protocol/Hybi10/Mask.hs
@@ -3,11 +3,9 @@
 module Network.WebSockets.Protocol.Hybi10.Mask
     ( Mask
     , maskPayload
-    , randomMask
     ) where
 
-import Data.Bits (shiftR, xor)
-import System.Random (RandomGen, random)
+import Data.Bits (xor)
 
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Lazy as BL
@@ -24,13 +22,3 @@
     f !i !c = let i' = (i + 1) `mod` len
                   m = mask `B.index` i
               in (i', m `xor` c)
-
--- | Create a random mask
-randomMask :: forall g. RandomGen g => g -> (Mask, g)
-randomMask gen = (Just (B.pack [b1, b2, b3, b4]), gen')
-  where
-    (!int, !gen') = random gen :: (Int, g)
-    !b1           = fromIntegral $ int `mod` 0x100
-    !b2           = fromIntegral $ int `shiftR` 8  `mod` 0x100
-    !b3           = fromIntegral $ int `shiftR` 16 `mod` 0x100
-    !b4           = fromIntegral $ int `shiftR` 24 `mod` 0x100
diff --git a/websockets.cabal b/websockets.cabal
--- a/websockets.cabal
+++ b/websockets.cabal
@@ -1,5 +1,5 @@
 Name:    websockets
-Version: 0.6.0.1
+Version: 0.6.0.2
 
 Synopsis:
   A sensible and clean way to write WebSocket-capable servers in Haskell.
