diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,11 @@
 For the latest version of this document, please see
 [https://github.com/DougBurke/hvega/blob/master/hvega/CHANGELOG.md](https://github.com/DougBurke/hvega/blob/master/hvega/CHANGELOG.md).
 
+## 0.9.1.0
+
+The tutorial has been expanded to add a section describing the
+new pie chart support (the Arc mark).
+
 ## 0.9.0.1
 
 The introductory text of the module has been updated to start
diff --git a/hvega.cabal b/hvega.cabal
--- a/hvega.cabal
+++ b/hvega.cabal
@@ -1,5 +1,5 @@
 name:                hvega
-version:             0.9.0.1
+version:             0.9.1.0
 synopsis:            Create Vega-Lite visualizations (version 4) in Haskell.
 description:         This is based on the elm-vegalite package
                      (<http://package.elm-lang.org/packages/gicentre/elm-vegalite/latest>)
@@ -68,6 +68,8 @@
                      images/vl/stripploty.png
                      images/vl/stripplotwithcolor.png
                      images/vl/stripplotwithcolorordinal.png
+                     images/vl/piechart.png
+                     images/vl/piechartwithcounting.png
                      images/vl/parallaxbreakdown.png
                      images/vl/parallaxhistogram.png
                      images/vl/gmaghistogram.png
diff --git a/hvega.nix b/hvega.nix
--- a/hvega.nix
+++ b/hvega.nix
@@ -1,13 +1,19 @@
 { mkDerivation, aeson, aeson-pretty, base, bytestring, containers
-, filepath, stdenv, tasty, tasty-golden, text, unordered-containers
+, directory, filepath, http-conduit, stdenv, tagsoup, tasty
+, tasty-golden, text, unordered-containers
 }:
 mkDerivation {
   pname = "hvega";
-  version = "0.9.0.1";
+  version = "0.9.1.0";
   src = ./.;
+  configureFlags = [ "-ftools" ];
   isLibrary = true;
   isExecutable = true;
   libraryHaskellDepends = [ aeson base text unordered-containers ];
+  executableHaskellDepends = [
+    aeson aeson-pretty base bytestring directory filepath http-conduit
+    tagsoup text
+  ];
   testHaskellDepends = [
     aeson aeson-pretty base bytestring containers filepath tasty
     tasty-golden text unordered-containers
diff --git a/images/vl/piechart.png b/images/vl/piechart.png
new file mode 100644
Binary files /dev/null and b/images/vl/piechart.png differ
diff --git a/images/vl/piechartwithcounting.png b/images/vl/piechartwithcounting.png
new file mode 100644
Binary files /dev/null and b/images/vl/piechartwithcounting.png differ
diff --git a/src/Graphics/Vega/Tutorials/VegaLite.hs b/src/Graphics/Vega/Tutorials/VegaLite.hs
--- a/src/Graphics/Vega/Tutorials/VegaLite.hs
+++ b/src/Graphics/Vega/Tutorials/VegaLite.hs
@@ -19,7 +19,7 @@
 <https://youtu.be/9uaHRWj04D4 Wongsuphasawat et al at the 2017 Open Vis Conf>.
 
 The tutorial targets version 4 of the Vega-Lite specification and
-the functionality provided in version @0.5.0.0@ of hvega.
+the functionality provided in version @0.9.0.0@ of hvega.
 
 -}
 
@@ -82,6 +82,13 @@
 
   , stripPlotWithColorOrdinal
 
+  -- * A Pie Chart
+  --
+  -- $pie-chart
+
+  , pieChart
+  , pieChartWithCounting
+
   -- * Adding an axis
   --
   -- $add-axis
@@ -632,7 +639,7 @@
 'dataFromRows' - or directly from JSON (as a 'Data.Aeson.Value') using
 'dataFromJson'.
 
-An example showing 'dataFromColumns' is the 'skyPlotWithGraticules' plot,
+Examples showing 'dataFromColumns' are the 'pieChart' and'skyPlotWithGraticules' plots,
 but let's not peak ahead!
 
 -}
@@ -737,6 +744,120 @@
      , enc []
      ]
 
+
+-- $pie-chart
+-- Before adding a second axis, let's temporarily look at another
+-- \"one dimensiona" chart, namel the humble pie chart.
+-- The 'Arc' mark type allows you to create pie charts, as well as more
+-- complex visualizations which we won't discuss further in this
+-- tutorial.
+
+
+{-|
+
+In this example we embed the data for the pie chart - namely the number
+of stars per cluster - in the vsualization itself (using
+'dataFromColumns' to create column data labelled \"cluster\" and
+\"count\"). The 'position' encoding is set to 'Theta', which is
+given the star counts, and the 'color' is set to the
+Cluster name.
+
+<<images/vl/piechart.png>>
+
+<https://vega.github.io/editor/#/url/vega-lite/N4IgtghgTg1iBcJoGMQBoQBMIBcINADcIAbAVwFMBnBAbVGXKpwqgSRIAcALCAAgAKrdCGQB7MgDscCAOwAWAAwBfNAyYs2iAEIkIk8XwCMI8VJnx5ADgCcq9WWbDEAYTGQ+24RjPSERgFYAZntRDWcQAAkATwhMalMJP3gAwNDGR012AEkXPgAmIJsTHySLIPyA9PCtEFyCgDZFfMTzBHkbfOrMiIA5AHE8-PlU1uSlFTUwntqBEgoASziE0rb4IwqG7qdZqAhqCk4KMYsbIKtlAF1VEAASKmRuCkh2bhwcTip4AHpvwgoAOYQAB0AIWOG4ZAARsCFmJvg8npA-oCIABaEjgih-eTAgBWVDEkhEFAMYkwC0kAIIIAhFDwNIAZgsKCRMOxfDIMDhokd2ABHMj6HDg3ALf4gG7iEhiLSgZms9mIDI7EQ8vmISTuSmkSXKZRAA Open this visualization in the Vega Editor>
+
+@
+let manualData = 'dataFromColumns' []
+                 . 'dataColumn' "cluster" ('Strings' clusters)
+                 . dataColumn "count" ('Numbers' counts)
+                 $ []
+
+    clusters = [ \"alpha Per\", \"Blanco 1\", \"Coma Ber\", \"Hyades\", \"IC 2391\"
+               , \"IC 2602\", \"NGC 2451\", \"Pleiades\", \"Praesepe\"]
+    counts = [ 740, 489, 153, 515, 325, 492, 400, 1326, 938]
+
+    enc = encoding
+          . position 'Theta' [PName "count", PmType Quantitative]
+          . color [MName "cluster", MmType Nominal]
+
+in toVegaLite
+   [ manualData
+   , mark 'Arc' []
+   , enc []
+   ]
+@
+
+-}
+
+pieChart :: VegaLite
+pieChart =
+  let manualData = dataFromColumns []
+                   . dataColumn "cluster" (Strings clusters)
+                   . dataColumn "count" (Numbers counts)
+                   $ []
+
+      clusters = [ "alpha Per", "Blanco 1", "Coma Ber", "Hyades", "IC 2391"
+                 , "IC 2602", "NGC 2451", "Pleiades", "Praesepe"]
+      counts = [ 740, 489, 153, 515, 325, 492, 400, 1326, 938]
+
+      enc = encoding
+            . position Theta [PName "count", PmType Quantitative]
+            . color [MName "cluster", MmType Nominal]
+
+  in toVegaLite
+     [ manualData
+     , mark Arc []
+     , enc []
+     ]
+
+
+{-|
+
+There are three main changes to 'pieChart':
+
+ - 'MInnerRadius' is used to impose a minimum radius on the pie slices
+   (so leaving a hole in the center);
+
+ - the 'ViewStyle' configuration is used to turn off the plot edge;
+
+ - and the count value is calculated automatically by the 'PAggregate'
+   method (summing over the \"Cluster\" column), rather than having a
+   hand-generated table of values encoded in the visualization.
+
+<<images/vl/piechartwithcounting.png>>
+
+<https://vega.github.io/editor/#/url/vega-lite/N4Igxg9gdgZglgcxALlANzgUwO4tAZwBcAnCAa0xSgFcAbWgXwYBoQBbAQ2LLxEIE8ADpWQguYEKzhQomYgCUOAEzjV8KAEwAGFiCUdCHXtWK0UIABaFCg-MgD094h2wA6BHEIXqAIzVzIKEJMINdINnsAEQhqBAAhEwp7CzRMBA57TiI5ZNT0+31De3S4DgBaDnKANgBGKoqarTLDH1pMGo5XKAgyi0xlOVdCfDRJEBgIYk5CXkEufBFQAHFOJFEaNh85MfkAQQB9AEkAYXkAZXMNreIxwVoAD0vqTe3WSIBRI9OL9efrscw+zuj1+LxuTF0ABJ8GA+pxzFYbHZHHlOh4vL5XHAIPYYXCMqiyrRPJh7GgACyuABW+GgAKgkBUUDWoC8mEMvA4CAQxDSBhE4BiQTGAmE5gAjtQOEFPAY4KkQLpILRJrx4JhaEpzMdaGpgjdWKKBd02NIOGYIUA Open this visualization in the Vega Editor> 
+
+@
+let enc = encoding
+          . position Theta ['PAggregate' 'Count', PmType Quantitative]
+          . color [MName "Cluster", MmType Nominal]
+
+in toVegaLite
+   [ gaiaData
+   , mark Arc ['MInnerRadius' 20]
+   , enc []
+   , configure (configuration ('ViewStyle' ['ViewNoStroke']) [])
+   ]
+@
+
+-}
+
+
+pieChartWithCounting :: VegaLite
+pieChartWithCounting =
+  let enc = encoding
+            . position Theta [PAggregate Count, PmType Quantitative]
+            . color [MName "Cluster", MmType Nominal]
+
+  in toVegaLite
+     [ gaiaData
+     , mark Arc [MInnerRadius 20]
+     , enc []
+     , configure (configuration (ViewStyle [ViewNoStroke]) [])
+     ]
+
+
 -- $add-axis
 -- While the strip plot shows the range of parallaxes, it is hard to
 -- make out the distribution of values, since the ticks overlap. Even
@@ -746,7 +867,6 @@
 -- axis is easy to do, so let's see how the parallax distribution
 -- varies with cluster membership.
 
-
 {-|
 
 The 'stripPlotWithColor' visualization can be changed to show two
@@ -824,7 +944,7 @@
 simpleHistogram field =
   let enc = encoding
               . position X [ PName field, PmType Quantitative, 'PBin' [] ]
-              . position Y [ 'PAggregate' 'Count', PmType Quantitative ]
+              . position Y [ PAggregate Count, PmType Quantitative ]
 
   in toVegaLite
        [ gaiaData
@@ -973,7 +1093,7 @@
             . color [ MName \"Cluster\", MmType Nominal ]
 
     binning = PBin [ 'Step' 1 ]
-    axis = PAxis [ 'AxValues' ('Numbers' [ 0, 5 .. 20 ]) ]
+    axis = PAxis [ 'AxValues' (Numbers [ 0, 5 .. 20 ]) ]
 
 in toVegaLite
    [ gaiaData
@@ -2410,7 +2530,7 @@
     labelSpec = asSpec [ labelEnc [], mark 'Text' [ 'MdY' (-6) ] ]
 
     cfg = configure
-          . configuration ('ViewStyle' ['ViewNoStroke'])
+          . configuration (ViewStyle [ViewNoStroke])
 
 in toVegaLite [ width 300
               , height 250
@@ -2538,10 +2658,10 @@
                     , mark Geoshape [ ]
                     ]
 
-    raData = 'dataFromColumns' []
-                 . 'dataColumn' "x" (Numbers [ -120, -60, 60, 120 ])
+    raData = dataFromColumns []
+                 . dataColumn "x" (Numbers [ -120, -60, 60, 120 ])
                  . dataColumn "y" (Numbers [ 0, 0, 0, 0 ])
-                 . dataColumn "lbl" ('Strings' [ "16h", "20h", "4h", "8h" ])
+                 . dataColumn "lbl" (Strings [ "16h", "20h", "4h", "8h" ])
 
     decData = dataFromColumns []
                  . dataColumn "x" (Numbers [ 0, 0 ])
diff --git a/src/Graphics/Vega/VegaLite.hs b/src/Graphics/Vega/VegaLite.hs
--- a/src/Graphics/Vega/VegaLite.hs
+++ b/src/Graphics/Vega/VegaLite.hs
@@ -857,6 +857,8 @@
 
          -- ** Version 0.9
          --
+         -- $update0910
+         --
          -- $update0900
 
          -- ** Version 0.8
@@ -1254,6 +1256,9 @@
 -- $update
 -- The following section describes how to update code that used
 -- an older version of @hvega@.
+
+-- $update0910
+-- The tutorial has been expanded to add a section with pie charts.
 
 -- $update0900
 -- The @0.9.0.0@ release updates @hvega@ to support version 4.12 of
diff --git a/tools/PlayTutorial.hs b/tools/PlayTutorial.hs
--- a/tools/PlayTutorial.hs
+++ b/tools/PlayTutorial.hs
@@ -166,6 +166,8 @@
      , ("stripploty", VL.stripPlotY)
      , ("stripplotwithcolor", VL.stripPlotWithColor)
      , ("stripplotwithcolorordinal", VL.stripPlotWithColorOrdinal)
+     , ("piechart", VL.pieChart)
+     , ("piechartwithcounting", VL.pieChartWithCounting)
      , ("parallaxbreakdown", VL.parallaxBreakdown)
      , ("parallaxhistogram", VL.parallaxHistogram)
      , ("gmaghistogram", VL.gmagHistogram)
