diff --git a/hlibBladeRF.cabal b/hlibBladeRF.cabal
--- a/hlibBladeRF.cabal
+++ b/hlibBladeRF.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                hlibBladeRF
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            Haskell binding to libBladeRF SDR library
 description:         IO Monadic binding for libbladeRF software defined radio.
 homepage:            https://victoredwardocallaghan.github.io/hlibBladeRF
@@ -37,18 +37,7 @@
 --------------------------------------------
 
 library
-  exposed-modules:     Bindings.LibBladeRF
-                       Bindings.LibBladeRF.LibBladeRF
-                       Bindings.LibBladeRF.Utils
-                       Bindings.LibBladeRF.Flash
-                       Bindings.LibBladeRF.Si5338
-                       Bindings.LibBladeRF.Sync
-                       Bindings.LibBladeRF.Lms
-                       Bindings.LibBladeRF.Gain
-                       Bindings.LibBladeRF.Gpio
-                       Bindings.LibBladeRF.Types
-
-                       LibBladeRF
+  exposed-modules:     LibBladeRF
                        LibBladeRF.LibBladeRF
                        LibBladeRF.Sampling
                        LibBladeRF.Sync
@@ -58,7 +47,17 @@
                        LibBladeRF.Frequency
                        LibBladeRF.Utils
                        LibBladeRF.Types
-  -- other-modules:       
+
+  other-modules:       Bindings.LibBladeRF
+                       Bindings.LibBladeRF.LibBladeRF
+                       Bindings.LibBladeRF.Utils
+                       Bindings.LibBladeRF.Flash
+                       Bindings.LibBladeRF.Si5338
+                       Bindings.LibBladeRF.Sync
+                       Bindings.LibBladeRF.Lms
+                       Bindings.LibBladeRF.Gain
+                       Bindings.LibBladeRF.Gpio
+                       Bindings.LibBladeRF.Types
   -- other-extensions:    
   default-extensions:  ForeignFunctionInterface
   build-depends:       base >=4 && <4.8,
@@ -74,4 +73,3 @@
   type:                git
   location:            git://github.com/victoredwardocallaghan/hlibBladeRF
   branch:              master
-  subdir:              bindings-hlibbladeRF
diff --git a/src/LibBladeRF/Flash.hs b/src/LibBladeRF/Flash.hs
--- a/src/LibBladeRF/Flash.hs
+++ b/src/LibBladeRF/Flash.hs
@@ -12,13 +12,15 @@
 
 module LibBladeRF.Flash ( bladeRFEraseFlash
                         , bladeRFReadFlash
---                        , bladeRFWriteFlash
+                        , bladeRFWriteFlash
                         ) where
 
 import Foreign
 import Foreign.C.Types
 import Foreign.C.String
 
+import qualified Data.ByteString as BS
+
 import Bindings.LibBladeRF
 import LibBladeRF.LibBladeRF
 
@@ -47,11 +49,13 @@
   return (ret, buffer)
 
 -- | Write data from the bladeRF's SPI flash
--- FIXME - how to pass in a buffer of data???
---bladeRFWriteFlash :: DeviceHandle -> Word32 -> Word32 -> IO (CInt, Word8)
---bladeRFWriteFlash dev p c = do
---  bptr <- malloc :: IO (Ptr Word8)
---  ret <- c'bladerf_write_flash (unDeviceHandle dev) bptr p c
---  buffer <- peek bptr
---  free bptr
---  return (ret, buffer)
+-- XXX - Buffer allocation size must be `page` * BLADERF_FLASH_PAGE_SIZE bytes or larger.
+bladeRFWriteFlash :: DeviceHandle     -- ^ Device handle
+                  -> BS.ByteString    -- ^ Data to write to flash
+                  -> Word32           -- ^ page  Page to begin writing at
+                  -> Word32           -- ^ count
+                  -> IO ()
+bladeRFWriteFlash dev b p c = allocaBytes (fromIntegral $ p * c'BLADERF_FLASH_PAGE_SIZE) $ \bptr -> do
+  pokeArray bptr (BS.unpack b) -- XXX can we overflow here??
+  _ <- c'bladerf_write_flash (unDeviceHandle dev) bptr p c
+  return () -- ignore ret
