diff --git a/bool8.cabal b/bool8.cabal
--- a/bool8.cabal
+++ b/bool8.cabal
@@ -1,5 +1,5 @@
 Name:                bool8
-Version:             0.0
+Version:             0.0.1
 Synopsis:            Alternative Bool type stored as byte
 Description:
   The standard 'Bool' type has a 'Storable' instance
@@ -21,7 +21,7 @@
 Tested-With:         GHC==8.0.2, GHC==8.2.2
 
 Source-Repository this
-  Tag:         0.0
+  Tag:         0.0.1
   Type:        darcs
   Location:    http://hub.darcs.net/thielema/bool8
 
diff --git a/src/Data/Bool8.hs b/src/Data/Bool8.hs
--- a/src/Data/Bool8.hs
+++ b/src/Data/Bool8.hs
@@ -6,39 +6,42 @@
    ) where
 
 import Foreign.Storable (Storable, poke, peek, sizeOf, alignment)
-import Foreign.Ptr (castPtr)
+import Foreign.Ptr (Ptr, castPtr)
 
 import Data.Functor ((<$>))
 import Data.Word (Word8)
 
 
-newtype Bool8 = Bool8 Word8
+newtype Bool8 = Bool8 Bool
    deriving (Eq, Ord)
 
 instance Show Bool8 where
-   show (Bool8 0) = "Bool8.false"
+   show (Bool8 False) = "Bool8.false"
    show _ = "Bool8.true"
 
 instance Bounded Bool8 where
    minBound = false
    maxBound = true
 
+word8Ptr :: Ptr Bool8 -> Ptr Word8
+word8Ptr = castPtr
+
 instance Storable Bool8 where
    sizeOf _ = 1
    alignment _ = 1
-   peek ptr = Bool8 <$> peek (castPtr ptr)
-   poke ptr (Bool8 b) = poke (castPtr ptr) b
+   peek ptr = Bool8 . (0/=) <$> peek (word8Ptr ptr)
+   poke ptr (Bool8 b) = poke (word8Ptr ptr) (fromIntegral $ fromEnum b)
 
 instance Enum Bool8 where
-   fromEnum (Bool8 b) = fromIntegral b
-   toEnum k = Bool8 $ if k==0 then 0 else 1
+   fromEnum (Bool8 b) = fromEnum b
+   toEnum = Bool8 . toEnum
 
 false, true :: Bool8
-false = Bool8 0
-true = Bool8 1
+false = Bool8 False
+true = Bool8 True
 
 toBool :: Bool8 -> Bool
-toBool (Bool8 b) = b/=0
+toBool (Bool8 b) = b
 
 fromBool :: Bool -> Bool8
-fromBool b = if b then true else false
+fromBool = Bool8
