diff --git a/caerbannog.cabal b/caerbannog.cabal
--- a/caerbannog.cabal
+++ b/caerbannog.cabal
@@ -1,7 +1,7 @@
 cabal-version: >= 1.10
 
 name: caerbannog
-version: 0.6.0.5
+version: 0.6.1.0
 synopsis: That rabbit's got a vicious streak a mile wide!
 description:
   Caerbannog is a drop in replacement for the @binary-bits@ package. Unlike
@@ -55,7 +55,7 @@
     , bytestring
     , hspec >= 2.7.6 && < 2.9
     , QuickCheck >= 2.13.2 && < 2.15
-    , random >= 1.1 && < 1.2
+    , random >= 1.1 && < 1.3
   default-language: Haskell98
   hs-source-dirs: src/test
   main-is: Main.hs
diff --git a/src/lib/Data/Binary/Bits/Get.hs b/src/lib/Data/Binary/Bits/Get.hs
--- a/src/lib/Data/Binary/Bits/Get.hs
+++ b/src/lib/Data/Binary/Bits/Get.hs
@@ -83,7 +83,7 @@
 
 import Data.Bits
 import Data.Word
-import Control.Applicative
+import Control.Applicative as Appl
 
 import Prelude as P
 
@@ -346,6 +346,10 @@
 instance Applicative BitGet where
   pure x = B $ \s -> return (s,x)
   fm <*> m = fm >>= \f -> m >>= \v -> return (f v)
+
+instance Alternative BitGet where
+  empty = B (const Appl.empty)
+  (B f1) <|> (B f2) = B (\s -> f1 s <|> f2 s)
 
 -- | Run a 'BitGet' within the Binary packages 'Get' monad. If a byte has
 -- been partially consumed it will be discarded once 'runBitGet' is finished.
diff --git a/src/test/Main.hs b/src/test/Main.hs
--- a/src/test/Main.hs
+++ b/src/test/Main.hs
@@ -6,6 +6,7 @@
 import Data.Bits ((.|.))
 import Test.QuickCheck ((==>))
 
+import qualified Control.Applicative as Appl
 import qualified Data.Binary as Binary
 import qualified Data.Binary.Bits as BB
 import qualified Data.Binary.Bits.Get as BB
@@ -46,6 +47,10 @@
   Hspec.describe "Fail" $ do
       Hspec.it "monadic fail" $ QC.property prop_fail
 
+  Hspec.describe "Applicative" $ do
+      Hspec.it "left identity" $ QC.property prop_alternativeLeftIdentity
+      Hspec.it "right identity" $ QC.property prop_alternativeRightIdentity
+
   Hspec.describe "prop_bitput_with_get_from_binary" $ do
       Hspec.it "Word8" $ QC.property  (prop_bitput_with_get_from_binary :: W [Word.Word8]  -> QC.Property)
       Hspec.it "Word16" $ QC.property (prop_bitput_with_get_from_binary :: W [Word.Word16] -> QC.Property)
@@ -232,6 +237,17 @@
              , errMsg == errMsg0
              ]
        _ -> False
+
+-- | Test Alternative instance.
+prop_alternativeLeftIdentity :: L.ByteString -> QC.Property
+prop_alternativeLeftIdentity lbs = QC.property $
+  Binary.runGet (BB.runBitGet (Appl.empty Appl.<|> BB.getLazyByteString n)) lbs == lbs
+  where n = fromIntegral $ L.length lbs
+
+prop_alternativeRightIdentity :: L.ByteString -> QC.Property
+prop_alternativeRightIdentity lbs = QC.property $
+  Binary.runGet (BB.runBitGet (BB.getLazyByteString n Appl.<|> Appl.empty)) lbs == lbs
+  where n = fromIntegral $ L.length lbs
 
 -- | number of bits required to write @v@
 bitreq :: (Num b, Num a, Bits.Bits a, Ord a) => a -> b
