diff --git a/radius.cabal b/radius.cabal
--- a/radius.cabal
+++ b/radius.cabal
@@ -1,5 +1,5 @@
 name:                radius
-version:             0.6.0.3
+version:             0.6.1.0
 synopsis:            Remote Authentication Dial In User Service (RADIUS)
 description:         This module provides types and on the wire de/coding of RADIUS packets as per RFC2865
 homepage:            https://gitlab.com/codemonkeylabs/RADIUS
diff --git a/src/Network/RADIUS/Encoding.hs b/src/Network/RADIUS/Encoding.hs
--- a/src/Network/RADIUS/Encoding.hs
+++ b/src/Network/RADIUS/Encoding.hs
@@ -52,7 +52,7 @@
           attributes = encodeAttributes getPacketAttributes
           attrsLen   = fromIntegral $ B.length $ attributes
       when (authLen /= authenticatorLength) $
-           fail $ "RADIUS.Encoding: Invalid Authenticator length " ++ show authLen
+           error $ "RADIUS.Encoding: Invalid Authenticator length " ++ show authLen
       put getPacketType
       putWord8 iD
       putWord16be $ attrsLen + radiusHeaderSize
@@ -198,11 +198,11 @@
       putWord8 prefixLength
       putLazyByteString $ encode prefix
     put (VendorSpecificAttribute vendorId str)    = putAttributeM  26 $ do
-      when (not $ B.null str) $ fail $ "Empty String not allowed in Vendor-Specific Attribute "
+      when (not $ B.null str) $ error $ "Empty String not allowed in Vendor-Specific Attribute "
       putWord32be vendorId
       putLazyByteString str
     put (CHAPPassword identity str)               = putAttributeM   3 $ do
-      when (B.length str /= 16) $ fail $ "Invalid RADIUS CHAP Password length " ++ show str
+      when (B.length str /= 16) $ error $ "Invalid RADIUS CHAP Password length " ++ show str
       putWord8 identity
       putLazyByteString str
 
@@ -303,7 +303,7 @@
   attrLen      <- getWord8
   _reserved    <- getWord8
   prefixLength <- getWord8
-  when (attrLen /= 20) $ fail $ "Unsupported RADIUS Framed IPv6 Prefix attribute length "
+  when (attrLen /= 20) $ error $ "Unsupported RADIUS Framed IPv6 Prefix attribute length "
            ++ show attrLen
   prefix <- get
   return $ FramedIPv6Prefix prefixLength prefix
@@ -314,13 +314,13 @@
   return $ VendorSpecificAttribute iD attrData
 getAttribute 3 = do
   attrLen  <- getWord8
-  when (attrLen /= 19) $ fail $ "Invalid RADIUS CHAP Password length " ++ show attrLen
+  when (attrLen /= 19) $ error $ "Invalid RADIUS CHAP Password length " ++ show attrLen
   identity <- getWord8
   attrData <- getLazyByteString 16 -- CHAP response is always 16 octets
   return $ CHAPPassword identity attrData
 getAttribute 123 = do
   attrLen      <- getWord8
-  when (attrLen /= 20) $ fail $ "Unsupported RADIUS Delegated IPv6 Prefix attribute length "
+  when (attrLen /= 20) $ error $ "Unsupported RADIUS Delegated IPv6 Prefix attribute length "
            ++ show attrLen
   _reserved    <- getWord8
   prefixLength <- getWord8
diff --git a/src/Network/RADIUS/Microsoft.hs b/src/Network/RADIUS/Microsoft.hs
--- a/src/Network/RADIUS/Microsoft.hs
+++ b/src/Network/RADIUS/Microsoft.hs
@@ -25,7 +25,6 @@
 import Data.ByteArray            (convert)
 import Data.ByteString           (ByteString, pack, zipWith)
 import Data.ByteString.Internal  (w2c)
-import Data.Monoid               ((<>))
 import Data.Word                 (Word8, Word16, Word32)
 import Network.RADIUS.Types
 
