diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,89 @@
+# Changelog
+
+## [1.0.0.0] - 2021-11-20
+
+### Changed
+
+* Compatibility with `genvalidity >= 1.0.0.0`
+
+### Removed
+
+* `genTrulyUncheckedStrictByteString`
+* `shrinkTrulyUncheckedStrictByteString`
+* `genTrulyUncheckedLazyByteString`
+* `shrinkTrulyUncheckedLazyByteString`
+
+## [0.6.0.0] - 2020-04-17
+
+### Added
+
+* genStrictByteStringBy
+* genLazyByteStringBy
+* genLazyByteStringByStrictByteString
+* Benchmarks for the generators
+
+### Changed
+
+* Strict Bytestrings are now generated up to 4x faster.
+* Lazy Bytestrings are now generated to usually have multiple chunks.
+
+## [0.5.0.1] - 2020-02-10
+
+* Improved the cabal file
+
+## [0.5.0.0] - 2019-03-06
+
+### Added
+
+* genTrulyUncheckedLazyByteString
+* shrinkTrulyUncheckedLazyByteString
+
+### Changed
+
+* Removed the 'GenUnchecked' and 'GenInvalid' instances for both strict and lazy `ByteString`s
+* Poisoned those two instances as well.
+
+## [0.4.1.0] - 2019-03-06
+
+### Added
+
+* 'GenUnchecked' and 'GenValid' for 'ShortByteString'
+
+## [0.4.0.0] - 2019-03-06
+
+### Added
+
+* genTrulyUncheckedStrictByteString
+* shrinkTrulyUncheckedStrictByteString
+
+### Changed
+
+* The 'genUnchecked' instance of 'Strict.ByteString' and 'Lazy.ByteString' now `error` instead of generating values that segfault.
+
+## [0.3.0.2] - 2019-02-28
+
+### Changed
+
+* Clearer documentation
+
+## [0.3.0.1] - 2018-10-07
+
+### Changed
+
+* Test suite compatibility with `validity >= 0.9`
+
+## [0.3.0.0] - 2018-08-25
+
+### Added
+
+* `GenUnchecked`, `GenValid` and `GenInvalid`, instances for lazy `ByteString`.
+
+### Changed
+
+* `genUnchecked :: Gen ByteString` now generates much more unchecked values according to the new `validity-bytestring`.
+  **If you experience unexpected segfaults, the problem could be that you are using unchecked `ByteString`s where you should be using valid `ByteString`s.**
+
+## Older versions
+
+No history before version 0.3.0.0
+
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2016-2020 Tom Sydney Kerckhove
+Copyright (c) 2016-2021 Tom Sydney Kerckhove
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,3 +0,0 @@
-import Distribution.Simple
-
-main = defaultMain
diff --git a/genvalidity-bytestring.cabal b/genvalidity-bytestring.cabal
--- a/genvalidity-bytestring.cabal
+++ b/genvalidity-bytestring.cabal
@@ -1,23 +1,24 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.33.0.
+-- This file has been generated from package.yaml by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: e829149efdf6026d6246ee4a88e92b01272e80068931d575c245f5ba38e086b3
 
 name:           genvalidity-bytestring
-version:        0.6.0.0
+version:        1.0.0.0
 synopsis:       GenValidity support for ByteString
 category:       Testing
 homepage:       https://github.com/NorfairKing/validity#readme
 bug-reports:    https://github.com/NorfairKing/validity/issues
 author:         Tom Sydney Kerckhove
 maintainer:     syd@cs-syd.eu
-copyright:      Copyright: (c) 2016-2020 Tom Sydney Kerckhove
+copyright:      Copyright: (c) 2016-2021 Tom Sydney Kerckhove
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
+extra-source-files:
+    LICENSE
+    CHANGELOG.md
 
 source-repository head
   type: git
@@ -34,7 +35,7 @@
       QuickCheck
     , base >=4.7 && <5
     , bytestring
-    , genvalidity >=0.8
+    , genvalidity >=1.0
     , random
     , validity >=0.5
     , validity-bytestring >=0.4
@@ -54,7 +55,7 @@
     , base >=4.7 && <5
     , bytestring
     , deepseq
-    , genvalidity >=0.7
+    , genvalidity
     , genvalidity-bytestring
     , genvalidity-hspec
     , hspec
diff --git a/src/Data/GenValidity/ByteString.hs b/src/Data/GenValidity/ByteString.hs
--- a/src/Data/GenValidity/ByteString.hs
+++ b/src/Data/GenValidity/ByteString.hs
@@ -1,45 +1,26 @@
 {-# OPTIONS_GHC -fno-warn-orphans #-}
-{-# LANGUAGE CPP #-}
-#if MIN_VERSION_base(4,9,0)
-{-# LANGUAGE TypeOperators #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE UndecidableInstances #-}
-#endif
+
 module Data.GenValidity.ByteString where
 
+import qualified Data.ByteString as SB
+import qualified Data.ByteString.Lazy as LB
+import qualified Data.ByteString.Lazy.Internal as LB
+import qualified Data.ByteString.Short as Short
 import Data.GenValidity
 import Data.Validity.ByteString ()
+import Data.Word (Word8)
 import System.Random as Random
 import Test.QuickCheck
 import Test.QuickCheck.Gen
 import Test.QuickCheck.Random
-import Data.Word (Word8)
-#if !MIN_VERSION_base(4,8,0)
-import Control.Applicative ((<*>), pure)
-import Data.Functor ((<$>))
-#endif
-import qualified Data.ByteString as SB
-import qualified Data.ByteString.Internal as SB
-import qualified Data.ByteString.Lazy as LB
-import qualified Data.ByteString.Lazy.Internal as LB
-import qualified Data.ByteString.Short as Short
-#if MIN_VERSION_base(4,9,0)
-import GHC.TypeLits
-#endif
+
 -- |
 --
 -- > genValid = SB.pack <$> genValid
 -- > shrinkValid = fmap SB.pack . shrinkValid . SB.unpack
 instance GenValid SB.ByteString where
-    genValid = genStrictByteStringBy genValid
-    shrinkValid = fmap SB.pack . shrinkValid . SB.unpack
-#if MIN_VERSION_base(4,9,0)
--- If you see this error and want to learn more, have a look at docs/BYTESTRING.md
-instance GHC.TypeLits.TypeError ('GHC.TypeLits.Text "The GenUnchecked Data.ByteString.ByteString is disabled:" 'GHC.TypeLits.:$$: 'GHC.TypeLits.Text "Do not instantiate GenUnchecked, instantiate GenValid instead") =>
-         GenUnchecked SB.ByteString where
-    genUnchecked = error "unreachable"
-    shrinkUnchecked = error "unreachable"
-#endif
+  genValid = genStrictByteStringBy genValid
+  shrinkValid = fmap SB.pack . shrinkValid . SB.unpack
 
 genStrictByteStringBy :: Gen Word8 -> Gen SB.ByteString
 genStrictByteStringBy (MkGen word8Func) = do
@@ -51,39 +32,9 @@
            in Just (word8Func qc1 size, qc2)
      in fst $ SB.unfoldrN len go qcgen
 
-
--- | WARNING: Unchecked ByteStrings are __seriously__ broken.
---
--- The pointer may still point to something which is fine, but
--- the offset and length will most likely be complete nonsense.
--- This will most-likely lead to segfaults.
---
--- This means that 'genUnchecked' will generate seriously broken 'ByteString' values.
--- This is __intended__. If you need valid 'ByteString' values, use 'GenValid' instead.
---
--- Make sure to not use any test suite combinators or property combinators that involve
--- 'GenInvalid' (like 'genValiditySpec') on types that contain 'ByteString' values.
-genTrulyUncheckedStrictByteString :: Gen SB.ByteString
-genTrulyUncheckedStrictByteString = do
-    ws <- genUnchecked
-    -- TODO what do we do about the foreign pointer?
-    let SB.PS p _ _ = SB.pack ws
-    SB.PS p <$> genUnchecked <*> genUnchecked
-
-shrinkTrulyUncheckedStrictByteString :: SB.ByteString -> [SB.ByteString]
-shrinkTrulyUncheckedStrictByteString (SB.PS p o l) =
-    [SB.PS p o' l' | (o', l') <- shrinkUnchecked (o, l)]
-
 instance GenValid LB.ByteString where
-    genValid = genLazyByteStringBy genValid
-    shrinkValid = fmap LB.pack . shrinkValid . LB.unpack
-#if MIN_VERSION_base(4,9,0)
--- If you see this error and want to learn more, have a look at docs/BYTESTRING.md
-instance GHC.TypeLits.TypeError ('GHC.TypeLits.Text "The GenUnchecked Data.ByteString.Lazy.ByteString is disabled:" 'GHC.TypeLits.:$$: 'GHC.TypeLits.Text "Do not instantiate GenUnchecked, instantiate GenValid instead") =>
-         GenUnchecked LB.ByteString where
-    genUnchecked = error "unreachable"
-    shrinkUnchecked = error "unreachable"
-#endif
+  genValid = genLazyByteStringByStrictByteString genValid
+  shrinkValid = fmap LB.pack . shrinkValid . LB.unpack
 
 genLazyByteStringBy :: Gen Word8 -> Gen LB.ByteString
 genLazyByteStringBy gen = genLazyByteStringByStrictByteString (genStrictByteStringBy gen)
@@ -95,38 +46,8 @@
     go ss
   where
     go [] = pure LB.Empty
-    go (s:ss) = LB.Chunk <$> resize s gen <*> go ss
-
--- | WARNING: Unchecked ByteStrings are __seriously__ broken.
---
--- See 'genTrulyUncheckedStrictByteString'
-genTrulyUncheckedLazyByteString :: Gen LB.ByteString
-genTrulyUncheckedLazyByteString =
-    sized $ \n ->
-        case n of
-            0 -> pure LB.Empty
-            _ -> do
-                (a, b) <- genSplit n
-                sb <- resize a genTrulyUncheckedStrictByteString
-                lb <- resize b genTrulyUncheckedLazyByteString
-                pure $ LB.Chunk sb lb
-
-shrinkTrulyUncheckedLazyByteString :: LB.ByteString -> [LB.ByteString]
-shrinkTrulyUncheckedLazyByteString lb_ =
-    case lb_ of
-        LB.Empty -> []
-        (LB.Chunk sb lb) ->
-            LB.Empty :
-            [ LB.Chunk sb' lb'
-            | (sb', lb') <-
-                  shrinkTuple
-                      shrinkTrulyUncheckedStrictByteString
-                      shrinkTrulyUncheckedLazyByteString
-                      (sb, lb)
-            ]
-
-instance GenUnchecked Short.ShortByteString where
-    genUnchecked = Short.pack <$> genValid
-    shrinkUnchecked = fmap Short.pack . shrinkUnchecked . Short.unpack
+    go (s : ss) = LB.Chunk <$> resize s gen <*> go ss
 
-instance GenValid Short.ShortByteString
+instance GenValid Short.ShortByteString where
+  genValid = Short.pack <$> genValid
+  shrinkValid = fmap Short.pack . shrinkValid . Short.unpack
diff --git a/test/Data/GenValidity/ByteStringSpec.hs b/test/Data/GenValidity/ByteStringSpec.hs
--- a/test/Data/GenValidity/ByteStringSpec.hs
+++ b/test/Data/GenValidity/ByteStringSpec.hs
@@ -1,66 +1,65 @@
 module Data.GenValidity.ByteStringSpec
-    ( spec
-    ) where
+  ( spec,
+  )
+where
 
 import Control.DeepSeq
-
-import Test.Hspec
-import Test.QuickCheck
-
-import Data.GenValidity
-import Data.GenValidity.ByteString ()
-
 import qualified Data.ByteString as SB (ByteString)
 import qualified Data.ByteString.Lazy as LB (ByteString)
 import qualified Data.ByteString.Short as Short (ShortByteString)
+import Data.GenValidity
+import Data.GenValidity.ByteString ()
+import Test.Hspec
+import Test.QuickCheck
 
 checkable :: (Validity t, Show t, NFData t) => Gen t -> SpecWith ()
 checkable gen =
-    it "generates bytestrings that can be checked for validity" $
+  it "generates bytestrings that can be checked for validity" $
     forAll gen $ \v ->
-        case prettyValidate v of
-            Left e -> deepseq e True
-            Right v_ -> deepseq v_ True
+      case prettyValidate v of
+        Left e -> deepseq e True
+        Right v_ -> deepseq v_ True
 
 showable :: Show t => Gen t -> SpecWith ()
 showable gen =
-    it "generates bytestrings that can be shown" $
+  it "generates bytestrings that can be shown" $
     forAll gen $ \v -> deepseq (show v) True
 
 spec :: Spec
 spec = do
-    do describe "genValid :: Gen SB.ByteString" $ do
-           checkable (genValid :: Gen SB.ByteString)
-           showable (genValid :: Gen SB.ByteString)
-           it "generates valid strict bytestring" $
-               forAll (genValid :: Gen SB.ByteString) isValid
-       describe "genValid :: Gen LB.ByteString" $ do
-           checkable (genValid :: Gen LB.ByteString)
-           showable (genValid :: Gen LB.ByteString)
-           it "generates valid lazy bytestring" $
-               forAll (genValid :: Gen LB.ByteString) isValid
-    describe "genUnchecked :: Gen Short.ShortByteString" $ do
-        checkable (genUnchecked :: Gen Short.ShortByteString)
-        showable (genUnchecked :: Gen Short.ShortByteString)
-    describe "genValid :: Gen Short.ShortByteString" $ do
-        checkable (genValid :: Gen Short.ShortByteString)
-        showable (genValid :: Gen Short.ShortByteString)
-        it "generates valid lazy bytestring" $
-            forAll (genValid :: Gen Short.ShortByteString) isValid
+  do
+    describe "genValid :: Gen SB.ByteString" $ do
+      checkable (genValid :: Gen SB.ByteString)
+      showable (genValid :: Gen SB.ByteString)
+      it "generates valid strict bytestring" $
+        forAll (genValid :: Gen SB.ByteString) isValid
+    describe "genValid :: Gen LB.ByteString" $ do
+      checkable (genValid :: Gen LB.ByteString)
+      showable (genValid :: Gen LB.ByteString)
+      it "generates valid lazy bytestring" $
+        forAll (genValid :: Gen LB.ByteString) isValid
+  describe "genValid :: Gen Short.ShortByteString" $ do
+    checkable (genValid :: Gen Short.ShortByteString)
+    showable (genValid :: Gen Short.ShortByteString)
+  describe "genValid :: Gen Short.ShortByteString" $ do
+    checkable (genValid :: Gen Short.ShortByteString)
+    showable (genValid :: Gen Short.ShortByteString)
+    it "generates valid lazy bytestring" $
+      forAll (genValid :: Gen Short.ShortByteString) isValid
 
 -- Uncomment to test that the instances are poisoned
 --
--- instance GenUnchecked SB.ByteString where
---     genUnchecked = undefined
---     shrinkUnchecked = undefined
+-- instance GenValid SB.ByteString where
+--     genValid = undefined
+--     shrinkValid = undefined
 --
--- instance GenUnchecked LB.ByteString where
---     genUnchecked = undefined
---     shrinkUnchecked = undefined
+-- instance GenValid LB.ByteString where
+--     genValid = undefined
+--     shrinkValid = undefined
 --
 -- Uncomment to see the error message that you would get
 --
 -- data FooBar = FooBar SB.ByteString String
 --     deriving (Show, Eq, Generic)
 -- instance Validity FooBar
--- instance GenUnchecked FooBar
+-- instance GenValid FooBar
