diff --git a/Example.hs b/Example.hs
--- a/Example.hs
+++ b/Example.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 
-module Example where
+module Main where
 
 import Control.Monad.IO.Class (liftIO)
 import System.Metrics.Prometheus.Concurrent.RegistryT
diff --git a/prometheus.cabal b/prometheus.cabal
--- a/prometheus.cabal
+++ b/prometheus.cabal
@@ -1,5 +1,5 @@
 name:                prometheus
-version:             2.2.4
+version:             2.3.0
 synopsis:            Prometheus Haskell Client
 homepage:            http://github.com/bitnomial/prometheus
 bug-reports:         http://github.com/bitnomial/prometheus/issues
@@ -7,7 +7,7 @@
 license-file:        LICENSE
 author:              Luke Hoersten
 maintainer:          luke@bitnomial.com, opensource@bitnomial.com
-copyright:           Bitnomial, Inc. (c) 2016-2019
+copyright:           Bitnomial, Inc. (c) 2016-2023
 category:            Metrics, Monitoring, Web, System
 build-type:          Simple
 cabal-version:       >=1.10
@@ -60,6 +60,12 @@
 extra-source-files: Example.hs
                   , README.md
 
+-- This flag builds the Example.hs file.  It is only used for testing.  It
+-- is enabled in CI.
+flag buildexamples
+  description: Build the Example.hs file. This is normally only used for testing.
+  default:     False
+
 library
   hs-source-dirs: src
   default-language: Haskell2010
@@ -84,16 +90,30 @@
 
   build-depends: base            >= 4.9  && < 5
                , atomic-primops  >= 0.8  && < 0.9
-               , bytestring      >= 0.10 && < 0.12
-               , containers      >= 0.5  && < 0.7
+               , bytestring      >= 0.10 && < 0.13
+               , containers      >= 0.5  && < 0.8
                , http-client     >= 0.4  && < 0.8
                , http-client-tls >= 0.3  && < 0.4
                , http-types      >= 0.8  && < 0.13
                , network-uri     >= 2.5  && < 2.7
-               , text            >= 1.2  && < 2.1
+               , text            >= 1.2  && < 2.2
                , transformers    >= 0.4  && < 0.7
                , wai             >= 3.2  && < 3.3
                , warp            >= 3.2  && < 3.5
+
+executable prometheus-example
+  main-is: Example.hs
+  default-language: Haskell2010
+
+  ghc-options: -Wall -fwarn-tabs -fno-warn-unused-do-bind
+
+  build-depends: base
+               , prometheus
+
+  if flag(buildexamples)
+    buildable:         True
+  else
+    buildable:         False
 
 source-repository head
   type:     git
diff --git a/src/System/Metrics/Prometheus/Metric/Counter.hs b/src/System/Metrics/Prometheus/Metric/Counter.hs
--- a/src/System/Metrics/Prometheus/Metric/Counter.hs
+++ b/src/System/Metrics/Prometheus/Metric/Counter.hs
@@ -15,7 +15,7 @@
 
 
 newtype Counter = Counter {unCounter :: AtomicCounter}
-newtype CounterSample = CounterSample {unCounterSample :: Int}
+newtype CounterSample = CounterSample {unCounterSample :: Int} deriving Show
 
 
 new :: IO Counter
diff --git a/src/System/Metrics/Prometheus/Metric/Gauge.hs b/src/System/Metrics/Prometheus/Metric/Gauge.hs
--- a/src/System/Metrics/Prometheus/Metric/Gauge.hs
+++ b/src/System/Metrics/Prometheus/Metric/Gauge.hs
@@ -16,7 +16,7 @@
 
 
 newtype Gauge = Gauge {unGauge :: IORef Double}
-newtype GaugeSample = GaugeSample {unGaugeSample :: Double}
+newtype GaugeSample = GaugeSample {unGaugeSample :: Double} deriving Show
 
 
 new :: IO Gauge
diff --git a/src/System/Metrics/Prometheus/Metric/Histogram.hs b/src/System/Metrics/Prometheus/Metric/Histogram.hs
--- a/src/System/Metrics/Prometheus/Metric/Histogram.hs
+++ b/src/System/Metrics/Prometheus/Metric/Histogram.hs
@@ -36,6 +36,7 @@
     , histSum :: !Double
     , histCount :: !Int
     }
+    deriving Show
 
 
 new :: [UpperBound] -> IO Histogram
@@ -49,7 +50,7 @@
 observeAndSample :: Double -> Histogram -> IO HistogramSample
 observeAndSample x = flip atomicModifyIORef' update . unHistogram
   where
-    update histData = (hist' histData, histData)
+    update histData = (hist' histData, hist' histData)
     hist' histData =
         histData
             { histBuckets = updateBuckets x $ histBuckets histData
diff --git a/src/System/Metrics/Prometheus/Metric/Summary.hs b/src/System/Metrics/Prometheus/Metric/Summary.hs
--- a/src/System/Metrics/Prometheus/Metric/Summary.hs
+++ b/src/System/Metrics/Prometheus/Metric/Summary.hs
@@ -8,3 +8,4 @@
     , sumSum :: !Int
     , sumCount :: !Int
     }
+    deriving Show
