diff --git a/NanoID.cabal b/NanoID.cabal
--- a/NanoID.cabal
+++ b/NanoID.cabal
@@ -1,12 +1,12 @@
 name:                NanoID
-version:             3.2.1
+version:             3.3.0
 synopsis:            NanoID generator
 description:         Library and CLI tool for NanoID generation
 license:             BSD3
 license-file:        LICENSE
 author:              Michel Boucey
 maintainer:          michel.boucey@gmail.com
-copyright:           (c) 2021-2022 - Michel Boucey
+copyright:           (c) 2021-2023 - Michel Boucey
 category:            Data
 build-type:          Simple
 cabal-version:       >=1.10
@@ -20,8 +20,7 @@
    || == 8.8.4
    || == 8.10.7
    || == 9.0.2
-   || == 9.2.3
-   || == 9.4.1
+   || == 9.2.5
 
 source-repository head
   type:     git
@@ -42,6 +41,7 @@
 executable nanoid
   main-is:             Main.hs
   other-modules:       Options
+                       Paths_NanoID
   build-depends:       base                 >= 4.7  && < 4.17
                      , bytestring           >= 0.10 && < 0.12
                      , mwc-random           >= 0.13 && < 0.16
diff --git a/ReadMe.md b/ReadMe.md
--- a/ReadMe.md
+++ b/ReadMe.md
@@ -1,7 +1,7 @@
 # NanoID generator, library and CLI tool ![CI](https://github.com/MichelBoucey/NanoID/actions/workflows/haskell-ci.yml/badge.svg)
 ```
 [user@box ~] $ nanoid -h
-nanoid v3.2.0, (c) Michel Boucey 2022
+nanoid v3.3.0, (c) Michel Boucey 2022-2023
 
 Usage: nanoid [-a|--alphabet ARG] [-l|--length ARG] [-q|--quantity ARG] 
               [-n|--newline]
@@ -12,6 +12,7 @@
   -l,--length ARG          Get a shorter NanoID (Default length is 21 chars)
   -q,--quantity ARG        Quantity of NanoID to generate
   -n,--newline             Do not output the trailing newline
+  -v,--version             Show version
   -h,--help                Show this help text
 ```
 
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -1,10 +1,10 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP             #-}
 {-# LANGUAGE RecordWildCards #-}
 
 import           Control.Monad
 
 #if !MIN_VERSION_base(4,11,0)
-import           Data.Monoid              ((<>))
+import           Data.Monoid           ((<>))
 #endif
 
 import qualified Data.ByteString.Char8 as C
@@ -19,8 +19,10 @@
 main :: IO ()
 main = do
   Options{..} <- execParser opts
-  if length < 1 || length > 21
-    then strFail "nanoid length"
+  if showver
+    then putStrLn (showVer) >> exitFailure
+    else if length < 1 || length > 21
+      then strFail "nanoid length"
     else if quantity < 1
       then strFail "quantity"
       else do
diff --git a/app/Options.hs b/app/Options.hs
--- a/app/Options.hs
+++ b/app/Options.hs
@@ -1,15 +1,18 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP             #-}
+{-# LANGUAGE TemplateHaskell #-}
 
 module Options where
 
 import qualified Data.ByteString.Char8 as C
 
 #if !MIN_VERSION_base(4,11,0)
-import           Data.Monoid              ((<>))
+import           Data.Monoid           ((<>))
 #endif
 
 import           Data.NanoID
+import           Data.Version          (showVersion)
 import           Options.Applicative
+import           Paths_NanoID          (version)
 
 data Options =
   Options
@@ -17,13 +20,16 @@
     , length   :: Int
     , quantity :: Int
     , newline  :: Bool
+    , showver  :: Bool
     }
 
 opts :: ParserInfo Options
 opts = info (options <**> helper)
   ( fullDesc
     <> progDesc "NanoID generator"
-    <> header "nanoid v3.2.0, (c) Michel Boucey 2022" )
+    <> header ( "nanoid "
+                <> showVer
+                <> ", (c) Michel Boucey 2022-2023" ) )
 
 options :: Parser Options
 options =
@@ -51,4 +57,12 @@
         ( short 'n'
           <> long "newline"
           <> help "Do not output the trailing newline" )
+    <*>
+      flag False True
+        ( short 'v'
+          <> long "version"
+          <> help "Show version" )
+
+showVer :: String
+showVer = "v" <> showVersion version
 
diff --git a/src/Data/NanoID.hs b/src/Data/NanoID.hs
--- a/src/Data/NanoID.hs
+++ b/src/Data/NanoID.hs
@@ -9,18 +9,22 @@
 import           Data.Maybe
 
 #if !MIN_VERSION_base(4,11,0)
-import           Data.Monoid              ((<>))
+import           Data.Monoid           ((<>))
 #endif
 
-import           Data.Serialize           (Serialize)
+import           Data.Serialize        (Serialize)
 import           Data.Text.Encoding
 import           GHC.Generics
 import           Numeric.Natural
 import           System.Random.MWC
 
-data NanoID = NanoID { unNanoID :: !C.ByteString } deriving (Eq, Generic)
+newtype NanoID =
+  NanoID { unNanoID :: C.ByteString }
+  deriving (Eq, Generic)
 
-newtype Alphabet = Alphabet { unAlphabet :: C.ByteString } deriving (Eq)
+newtype Alphabet =
+  Alphabet { unAlphabet :: C.ByteString }
+  deriving (Eq)
 
 type Length = Natural
 
@@ -45,8 +49,7 @@
 
 -- | Standard 'NanoID' generator function
 --
--- >λ: g <- createSystemRandom
--- >λ: nanoID g
+-- >λ: createSystemRandom >>= nanoID
 -- >x2f8yFadIm-Vp14ByJ8R3
 --
 nanoID :: GenIO -> IO NanoID
