diff --git a/apps/Dump.hs b/apps/Dump.hs
--- a/apps/Dump.hs
+++ b/apps/Dump.hs
@@ -6,7 +6,6 @@
 import           Control.Concurrent (threadDelay)
 import           Control.Monad
 import           Data.Aeson (ToJSON (..), encode)
-import qualified Data.ByteString as BS
 import qualified Data.ByteString.Lazy.Char8 as BSL8
 import qualified Data.ByteString.Lazy as BSL
 import qualified Data.ByteString.Lazy.Builder as Builder
@@ -200,7 +199,7 @@
               Raw     -> readEmotivRaw device `withJustM` \rawBytes -> do
                            case format of
                              Default -> -- raw data stdout; flush so that consuming apps immediately get it
-                                        BS.putStr (emotivRawDataBytes rawBytes) >> hFlush stdout
+                                        output $ BSL.fromStrict (emotivRawDataBytes rawBytes)
 
                              _       -> -- use EmotivRawData newtype for base64 encoding
                                         output $ formatOutput rawBytes
diff --git a/apps/DumpConduit.hs b/apps/DumpConduit.hs
--- a/apps/DumpConduit.hs
+++ b/apps/DumpConduit.hs
@@ -175,8 +175,8 @@
                 Just (Websocket host port) -> websocketSink host port
                 Just (TCP host port)       -> tcpSink host port
 
-              -- Prints raw bytes to stdout
-              rawBytesSink = CL.mapM_ (putStrBsFlush . emotivRawDataBytes)
+              -- Turns EmotivRawData into a lazy ByteString (no base64 encoding)
+              rawBytesConduit = CL.map (BSL8.fromStrict . emotivRawDataBytes)
 
               throttled = if realtime then ($= throttle) else id
 
@@ -190,14 +190,12 @@
                          _           -> formatConduit =$ outputSink
 
             Raw     -> throttled (rawSource     device) $$ case format of
-                         Default -> rawBytesSink
+                         Default -> rawBytesConduit =$ outputSink
                          _       -> formatConduit =$ outputSink -- use EmotivRawData newtype for base64 encoding
 
             Measure -> throttled (rawSource     device) $= measureConduit $$ formatConduit =$ outputSink
 
   where
-    putStrBsFlush bs = BS.putStr bs >> hFlush stdout
-
     measureConduit = do
       -- For --mode measure: See how long a 0-128 cycle takes
       timeRef  <- liftIO $ newIORef =<< getCurrentTime
diff --git a/hemokit.cabal b/hemokit.cabal
--- a/hemokit.cabal
+++ b/hemokit.cabal
@@ -1,5 +1,5 @@
 name:          hemokit
-version:       0.6.3
+version:       0.6.4
 license:       MIT
 copyright:     2013 Niklas Hambüchen <mail@nh2.me>, Patrick Chilton <chpatrick@gmail.com>
 author:        Niklas Hambüchen <mail@nh2.me>, Patrick Chilton <chpatrick@gmail.com>
@@ -71,8 +71,9 @@
     , deepseq-generics       >= 0.1
     , hidapi                 >= 0.1.2
     , mtl                    >= 2.1.2
-    , network-simple         >= 0.3.0
-    , optparse-applicative   >= 0.7.0
+    -- network-simple 0.4.0.1 breaks on Windows: https://github.com/k0001/network-simple/issues/13
+    , network-simple         >= 0.3.0   && < 0.4.0.1
+    , optparse-applicative   >= 0.7.0   && < 0.10.0
     , text                   >= 0.11.1.1
     , vector                 >= 0.9
     , websockets             >= 0.8.0.0
@@ -83,14 +84,14 @@
 
 
 executable hemokit-mouse
-  if !flag(mouse)
+  if !flag(mouse) || os(windows)
     buildable: False
   default-language: Haskell2010
   hs-source-dirs:
     apps
   main-is:
     Mouse.hs
-  if flag(mouse)
+  if flag(mouse) && !os(windows)
     build-depends:
         base
       , hemokit
@@ -114,8 +115,9 @@
     , hemokit
     , aeson                  >= 0.6.1.0
     , bytestring             >= 0.9.2.1
-    , network-simple         >= 0.3.0
-    , optparse-applicative   >= 0.7.0
+    -- network-simple 0.4.0.1 breaks on Windows: https://github.com/k0001/network-simple/issues/13
+    , network-simple         >= 0.3.0   && < 0.4.0.1
+    , optparse-applicative   >= 0.7.0   && < 0.10.0
     , pretty-show            >= 1.0
     , split                  >= 0.2.2
     , time                   >= 1.4
@@ -137,8 +139,9 @@
     , aeson                  >= 0.6.1.0
     , bytestring             >= 0.9.2.1
     , conduit                >= 1
-    , network-simple         >= 0.3.0
-    , optparse-applicative   >= 0.7.0
+    -- network-simple 0.4.0.1 breaks on Windows: https://github.com/k0001/network-simple/issues/13
+    , network-simple         >= 0.3.0   && < 0.4.0.1
+    , optparse-applicative   >= 0.7.0   && < 0.10.0
     , pretty-show            >= 1.0
     , split                  >= 0.2.2
     , time                   >= 1.4
@@ -168,14 +171,14 @@
 
 
 executable hemokit-headmap
-  if !flag(headmap)
+  if !flag(headmap) || os(windows)
     buildable: False
   default-language: Haskell2010
   hs-source-dirs:
     apps
   main-is:
     Headmap.hs
-  if flag(headmap)
+  if flag(headmap) && !os(windows)
     build-depends:
         base
       , hemokit
