diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: snowchecked
-version: 0.0.1.0
+version: 0.0.1.1
 github: robertfischer/hs-snowflake-checked
 license: Apache-2.0
 author: Robert Fischer
@@ -23,7 +23,7 @@
 description: See the file ./README.md, which is included in the package and also on GitHub.
 
 dependencies:
-  - base >= 4.14.1.0 && < 4.15
+  - base >= 4.14.1.0 && < 5
   - bytestring >= 0.10.12.0
   - wide-word >= 0.1.1.2
   - data-default >= 0.7.1.1
@@ -33,39 +33,40 @@
   - text >= 1.2.4.1
 
 ghc-options:
-  - -Wall
-  - -Wcompat
-  - -Widentities
-  - -Werror=unused-do-bind
-  - -Werror=incomplete-record-updates
-  - -Werror=incomplete-uni-patterns
-  - -Werror=partial-fields
-  - -Werror=incomplete-patterns
-  - -Wredundant-constraints
-  - -Werror=missing-exported-signatures
-  - -Wmissed-specializations
-  - -Wno-unused-packages
-  - -Wunused-type-patterns
-  - -Werror=warnings-deprecations
-  - -Wnoncanonical-monad-instances
-  - -Wno-type-defaults
   - -Wno-tabs
-  - -feager-blackholing
-  - -fexcess-precision
-  - -flate-dmd-anal
-  - -fmax-inline-alloc-size=1024
-  - -fmax-simplifier-iterations=8
-  - -fpedantic-bottoms
-  - -fregs-iterative
-  - -fsimplifier-phases=4
-  - -fspec-constr-count=10
-  - -fspecialise-aggressively
-  - -flate-specialise
-  - -fstatic-argument-transformation
-  - -fstrictness-before=3
 
 library:
   source-dirs: src
+  ghc-options:
+    - -Wall
+    - -Wcompat
+    - -Wno-type-defaults
+    - -Wno-tabs
+    - -Widentities
+    - -Werror=unused-do-bind
+    - -Werror=incomplete-record-updates
+    - -Werror=incomplete-uni-patterns
+    - -Werror=partial-fields
+    - -Werror=incomplete-patterns
+    - -Wredundant-constraints
+    - -Werror=missing-exported-signatures
+    - -Wmissed-specializations
+    - -Wunused-type-patterns
+    - -Werror=warnings-deprecations
+    - -Wnoncanonical-monad-instances
+    - -feager-blackholing
+    - -fexcess-precision
+    - -flate-dmd-anal
+    - -fmax-inline-alloc-size=1024
+    - -fmax-simplifier-iterations=8
+    - -fpedantic-bottoms
+    - -fregs-iterative
+    - -fsimplifier-phases=4
+    - -fspec-constr-count=10
+    - -fspecialise-aggressively
+    - -flate-specialise
+    - -fstatic-argument-transformation
+    - -fstrictness-before=3
 
 tests:
   test-suite:
diff --git a/snowchecked.cabal b/snowchecked.cabal
--- a/snowchecked.cabal
+++ b/snowchecked.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           snowchecked
-version:        0.0.1.0
+version:        0.0.1.1
 synopsis:       A checksummed variation on Twitter's Snowflake UID generation algorithm
 description:    See the file ./README.md, which is included in the package and also on GitHub.
 category:       Data
@@ -42,9 +42,9 @@
       Paths_snowchecked
   hs-source-dirs:
       src
-  ghc-options: -Wall -Wcompat -Widentities -Werror=unused-do-bind -Werror=incomplete-record-updates -Werror=incomplete-uni-patterns -Werror=partial-fields -Werror=incomplete-patterns -Wredundant-constraints -Werror=missing-exported-signatures -Wmissed-specializations -Wno-unused-packages -Wunused-type-patterns -Werror=warnings-deprecations -Wnoncanonical-monad-instances -Wno-type-defaults -Wno-tabs -feager-blackholing -fexcess-precision -flate-dmd-anal -fmax-inline-alloc-size=1024 -fmax-simplifier-iterations=8 -fpedantic-bottoms -fregs-iterative -fsimplifier-phases=4 -fspec-constr-count=10 -fspecialise-aggressively -flate-specialise -fstatic-argument-transformation -fstrictness-before=3
+  ghc-options: -Wno-tabs -Wall -Wcompat -Wno-type-defaults -Wno-tabs -Widentities -Werror=unused-do-bind -Werror=incomplete-record-updates -Werror=incomplete-uni-patterns -Werror=partial-fields -Werror=incomplete-patterns -Wredundant-constraints -Werror=missing-exported-signatures -Wmissed-specializations -Wunused-type-patterns -Werror=warnings-deprecations -Wnoncanonical-monad-instances -feager-blackholing -fexcess-precision -flate-dmd-anal -fmax-inline-alloc-size=1024 -fmax-simplifier-iterations=8 -fpedantic-bottoms -fregs-iterative -fsimplifier-phases=4 -fspec-constr-count=10 -fspecialise-aggressively -flate-specialise -fstatic-argument-transformation -fstrictness-before=3
   build-depends:
-      base >=4.14.1.0 && <4.15
+      base >=4.14.1.0 && <5
     , bytestring >=0.10.12.0
     , data-default >=0.7.1.1
     , deepseq >=1.4.4.0
@@ -67,9 +67,9 @@
       Paths_snowchecked
   hs-source-dirs:
       test
-  ghc-options: -Wall -Wcompat -Widentities -Werror=unused-do-bind -Werror=incomplete-record-updates -Werror=incomplete-uni-patterns -Werror=partial-fields -Werror=incomplete-patterns -Wredundant-constraints -Werror=missing-exported-signatures -Wmissed-specializations -Wno-unused-packages -Wunused-type-patterns -Werror=warnings-deprecations -Wnoncanonical-monad-instances -Wno-type-defaults -Wno-tabs -feager-blackholing -fexcess-precision -flate-dmd-anal -fmax-inline-alloc-size=1024 -fmax-simplifier-iterations=8 -fpedantic-bottoms -fregs-iterative -fsimplifier-phases=4 -fspec-constr-count=10 -fspecialise-aggressively -flate-specialise -fstatic-argument-transformation -fstrictness-before=3 -threaded -rtsopts -with-rtsopts=-N
+  ghc-options: -Wno-tabs -threaded -rtsopts -with-rtsopts=-N
   build-depends:
-      base >=4.14.1.0 && <4.15
+      base >=4.14.1.0 && <5
     , bytestring >=0.10.12.0
     , data-default >=0.7.1.1
     , deepseq >=1.4.4.0
diff --git a/src/Data/Snowchecked.hs b/src/Data/Snowchecked.hs
--- a/src/Data/Snowchecked.hs
+++ b/src/Data/Snowchecked.hs
@@ -1,6 +1,5 @@
-{-# LANGUAGE BlockArguments   #-}
-{-# LANGUAGE RecordWildCards  #-}
-{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE BlockArguments  #-}
+{-# LANGUAGE RecordWildCards #-}
 {-|
 Description : Unique id generator derived from Twitter's Snowflake.
 License     : Apache 2.0
@@ -46,7 +45,7 @@
 	startTimeBits <- currentTimestampBits confTimeBits
 	SnowcheckedGen <$> newMVar Flake
 		{ flakeTime = startTimeBits
-		, flakeCount = 0
+		, flakeCount = maxBound
 		, flakeNodeId = cutBits nodeId confNodeBits
 		, flakeConfig = conf
 		}
@@ -101,5 +100,8 @@
 -- | Provides the count of total number of unique flakes possibly generated by a node using
 -- this configuration.
 uniqueFlakeCount :: SnowcheckedConfig -> Integer
-uniqueFlakeCount SnowcheckedConfig{..} = toInteger confCountBits * toInteger confTimeBits
+uniqueFlakeCount SnowcheckedConfig{..}
+	| confCountBits == 0 = 2^confTimeBits
+	| confTimeBits  == 0 = 2^confCountBits
+	| otherwise          = 2^confCountBits * 2^confTimeBits
 {-# INLINE uniqueFlakeCount #-}
diff --git a/src/Data/Snowchecked/Encoding/Text.hs b/src/Data/Snowchecked/Encoding/Text.hs
--- a/src/Data/Snowchecked/Encoding/Text.hs
+++ b/src/Data/Snowchecked/Encoding/Text.hs
@@ -55,6 +55,7 @@
 c 14 = 'e'
 c 15 = 'f'
 c _  = '\0'
+{-# INLINE c #-}
 
 -- | Converts a character to a hex value (if there is one).
 b :: Char -> Maybe Word8
@@ -74,6 +75,7 @@
 			'F' -> Just 15
 			'f' -> Just 15
 			_   -> Nothing
+{-# INLINE b #-}
 
 -- | Converts a byte to two hex characters: low nibble and then high nibble.
 byteToHex :: Word8 -> (Char,Char)
@@ -81,6 +83,7 @@
 	where
 		lowNibble = cutBits w8 4
 		highNibble = shiftCutBits w8 4 4
+{-# INLINE byteToHex #-}
 
 instance {-# INCOHERENT #-} (ToText a, FromText a) => IsFlake (Base16 a) where
 	fromFlake flake = Base16 $ convertText str
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -17,7 +17,7 @@
 #
 # resolver: ./custom-snapshot.yaml
 # resolver: https://example.com/snapshots/2018-01-01.yaml
-resolver: lts-18.5
+resolver: lts-19.15
 
 # User packages to be built.
 # Various formats can be used as shown in the example below.
diff --git a/stack.yaml.lock b/stack.yaml.lock
--- a/stack.yaml.lock
+++ b/stack.yaml.lock
@@ -6,7 +6,7 @@
 packages: []
 snapshots:
 - completed:
-    size: 585817
-    url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/5.yaml
-    sha256: 22d24d0dacad9c1450b9a174c28d203f9bb482a2a8da9710a2f2a9f4afee2887
-  original: lts-18.5
+    size: 618952
+    url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/19/15.yaml
+    sha256: 82e5ccb47b068521de4055034e8aa278eab430b586881d9cc29ba8b382ce3253
+  original: lts-19.15
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -15,10 +15,10 @@
 import qualified Hedgehog.Range         as Range
 
 import qualified Integer
+import qualified String
+import qualified Text
 import qualified Word32
 import qualified Word64
-import qualified Text
-import qualified String
 
 main :: IO ()
 main = do
@@ -49,3 +49,25 @@
 prop_flakeCanBeNFed = property $ do
 	flake <- forAllFlake
 	void $ evalNF flake
+
+prop_generatesUniqueValuesWithZeroCheckBits :: Property
+prop_generatesUniqueValuesWithZeroCheckBits = property $ do
+	lst <- forAll $ Gen.list (Range.linear 2 1024) (return ())
+	cfgBase <- forAll genConfig
+	let cfg = cfgBase { confCheckBits = 0 }
+	unless ( uniqueFlakeCount cfg > toInteger (length lst) ) discard
+	nodeId <- forAll genWord256
+	flakeGen <- newSnowcheckedGen cfg nodeId
+	resultLst <- mapM (\_ -> nextFlake flakeGen) lst
+	resultLst === nub resultLst
+
+prop_generatesUniqueValuesWithZeroNodeIdBits :: Property
+prop_generatesUniqueValuesWithZeroNodeIdBits = property $ do
+	lst <- forAll $ Gen.list (Range.linear 2 1024) (return ())
+	cfgBase <- forAll genConfig
+	let cfg = cfgBase { confNodeBits = 0 }
+	unless ( uniqueFlakeCount cfg > toInteger (length lst) ) discard
+	nodeId <- forAll genWord256
+	flakeGen <- newSnowcheckedGen cfg nodeId
+	resultLst <- mapM (\_ -> nextFlake flakeGen) lst
+	resultLst === nub resultLst
