diff --git a/Readme.md b/Readme.md
--- a/Readme.md
+++ b/Readme.md
@@ -18,7 +18,3 @@
 ```
 
 See the full code in the tests.
-
----
-
-Added to a separate project as discussed in [here](https://github.com/psibi/fakedata/pull/27)
diff --git a/fakedata-quickcheck.cabal b/fakedata-quickcheck.cabal
--- a/fakedata-quickcheck.cabal
+++ b/fakedata-quickcheck.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.2.
+-- This file has been generated from package.yaml by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
 
 name:           fakedata-quickcheck
-version:        0.1.0
+version:        0.2.0
 synopsis:       Fake a -> Gen a
 description:    Use fakedata Fake monad for quicheck tests. See readme for examples at <https://github.com/fakedata-haskell/fakedata-quickcheck>.
 category:       Random, Fake, FakeData
@@ -32,13 +32,32 @@
       Paths_fakedata_quickcheck
   hs-source-dirs:
       src
-  default-extensions: EmptyCase FlexibleContexts FlexibleInstances InstanceSigs MultiParamTypeClasses LambdaCase MultiWayIf NamedFieldPuns TupleSections DeriveFoldable DeriveFunctor DeriveGeneric DeriveLift DeriveTraversable DerivingStrategies GeneralizedNewtypeDeriving StandaloneDeriving OverloadedStrings TypeApplications
+  default-extensions:
+      EmptyCase
+      FlexibleContexts
+      FlexibleInstances
+      InstanceSigs
+      MultiParamTypeClasses
+      LambdaCase
+      MultiWayIf
+      NamedFieldPuns
+      TupleSections
+      DeriveFoldable
+      DeriveFunctor
+      DeriveGeneric
+      DeriveLift
+      DeriveTraversable
+      DerivingStrategies
+      GeneralizedNewtypeDeriving
+      StandaloneDeriving
+      OverloadedStrings
+      TypeApplications
   ghc-options: -Wall -Wcompat -Wincomplete-uni-patterns -Wredundant-constraints -Wincomplete-record-updates -Widentities
   build-depends:
       QuickCheck >=2.6 && <2.15
     , base >=4.7 && <5
-    , fakedata >=0.6.0 && <0.9.0
-    , random >=1 && <1.2.0
+    , fakedata
+    , random
   default-language: Haskell2010
 
 test-suite unit
@@ -49,16 +68,35 @@
       Paths_fakedata_quickcheck
   hs-source-dirs:
       test
-  default-extensions: EmptyCase FlexibleContexts FlexibleInstances InstanceSigs MultiParamTypeClasses LambdaCase MultiWayIf NamedFieldPuns TupleSections DeriveFoldable DeriveFunctor DeriveGeneric DeriveLift DeriveTraversable DerivingStrategies GeneralizedNewtypeDeriving StandaloneDeriving OverloadedStrings TypeApplications
+  default-extensions:
+      EmptyCase
+      FlexibleContexts
+      FlexibleInstances
+      InstanceSigs
+      MultiParamTypeClasses
+      LambdaCase
+      MultiWayIf
+      NamedFieldPuns
+      TupleSections
+      DeriveFoldable
+      DeriveFunctor
+      DeriveGeneric
+      DeriveLift
+      DeriveTraversable
+      DerivingStrategies
+      GeneralizedNewtypeDeriving
+      StandaloneDeriving
+      OverloadedStrings
+      TypeApplications
   ghc-options: -Wall -Wcompat -Wincomplete-uni-patterns -Wredundant-constraints -Wincomplete-record-updates -Widentities
   build-depends:
       QuickCheck >=2.6 && <2.15
     , base >=4.7 && <5
-    , fakedata >=0.6.0 && <0.9.0
+    , fakedata
     , fakedata-quickcheck
     , hspec
     , hspec-core
-    , random >=1 && <1.2.0
+    , random
     , regex-tdfa
     , text
   default-language: Haskell2010
diff --git a/src/Test/QuickCheck/Gen/Faker.hs b/src/Test/QuickCheck/Gen/Faker.hs
--- a/src/Test/QuickCheck/Gen/Faker.hs
+++ b/src/Test/QuickCheck/Gen/Faker.hs
@@ -12,15 +12,20 @@
 fakeQuickcheck :: Fake a -> Q.Gen a
 fakeQuickcheck = fakeQuickcheck' defaultFakerSettings
 
--- | copied from https://github.com/parsonsmatt/hedgehog-fakedata/blob/d342c6eb5aeb9990bb36ede1d1f08becc7d71e16/src/Hedgehog/Gen/Faker.hs
--- Works in Quickcheck gen instead of hedgehog
+-- | Select a value 'Fake' program in 'Gen'.
 --
--- Select a value 'Fake' program in 'Gen'.
+-- Example property to check that names aren't empty:
 --
--- Note that the implementation relies on 'unsafePerformIO'.
--- The faker library uses IO internally for looking up data files.
--- but 'liftIO' in the 'Fake' monad is a gateway to arbitrary side effects.
--- This library doesn't solve that.
+-- @
+-- λ> import Faker.Name (name)
+-- λ> import Test.QuickCheck.Gen.Faker
+-- λ> import qualified Test.QuickCheck as Q
+-- λ> import qualified Data.Text as T
+-- λ> Q.quickCheck (Q.forAll (fakeQuickcheck name) (not . T.null))
+-- +++ OK, passed 100 tests.
+--
+-- @
+
 fakeQuickcheck' :: FakerSettings -> Fake a -> Q.Gen a
 fakeQuickcheck' fakerSettings f = do
     randomGen <- mkStdGen <$> Q.choose (minBound, maxBound)
diff --git a/test/Test/FakeQuickCheckSpec.hs b/test/Test/FakeQuickCheckSpec.hs
--- a/test/Test/FakeQuickCheckSpec.hs
+++ b/test/Test/FakeQuickCheckSpec.hs
@@ -15,8 +15,9 @@
 import qualified Faker.Internet as F
 import           Test.Hspec
 import qualified Test.QuickCheck as Q
+import qualified Test.QuickCheck.Gen as QG
 import Data.Char(isAlphaNum)
-
+import Data.List (nub)
 
 isDomain :: Text -> Bool
 isDomain = (=~ ddd) . T.unpack
@@ -26,8 +27,11 @@
 
 spec :: Spec
 spec = do
-  describe "fakedata quickcheck" $
-    it "forall domain fullfils is a domain name regex" $ Q.property $ Q.forAll (fakeQuickcheck domain) isDomain
+  describe "fakedata quickcheck" $ do
+    it "forall domain fullfils is a domain name regex" $ Q.property (Q.forAll (fakeQuickcheck domain) isDomain)
+    it "has different sample values" $ do
+      values <- QG.sample' (fakeQuickcheck CM.name)
+      (isUnique values) `shouldBe` True
 
 domain :: Fake Text
 domain = do
@@ -37,3 +41,7 @@
 
 fixupName :: Text -> Text
 fixupName = T.filter (\c -> isAlphaNum c || c == '_') . T.replace " " "_"
+
+-- | Check that at least a single value is different
+isUnique :: [Text] -> Bool
+isUnique xs = length (nub xs) > 1
