diff --git a/Data/Binary/Bits/Put.hs b/Data/Binary/Bits/Put.hs
--- a/Data/Binary/Bits/Put.hs
+++ b/Data/Binary/Bits/Put.hs
@@ -38,6 +38,7 @@
 
 import Data.ByteString
 
+import Control.Applicative
 import Data.Bits
 import Data.Monoid
 import Data.Word
@@ -153,6 +154,18 @@
   where
   PairS _ s = run m (S mempty 0 0)
   (S b _ _) = flushIncomplete s
+
+instance Functor BitPut where
+  fmap f (BitPut k) = BitPut $ \s ->
+    let PairS x s' = k s
+    in PairS (f x) s'
+
+instance Applicative BitPut where
+  pure a = BitPut (\s -> PairS a s)
+  (BitPut f) <*> (BitPut g) = BitPut $ \s ->
+    let PairS a s' = f s
+        PairS b s'' = g s'
+    in PairS (a b) s''
 
 instance Monad BitPut where
   m >>= k = BitPut $ \s ->
diff --git a/binary-bits.cabal b/binary-bits.cabal
--- a/binary-bits.cabal
+++ b/binary-bits.cabal
@@ -1,6 +1,6 @@
 -- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/
 name:                binary-bits
-version:             0.4
+version:             0.5
 synopsis:            Bit parsing/writing on top of binary.
 description:         Bit parsing/writing on top of binary. Provides functions to
                      read and write bits to and from 8\/16\/32\/64 words.
