diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 3.2.0
+
+- `averageLevel` isn't total, and so now returns in `Maybe`
+
 ## 3.1.0.1
 
 - Performance improvements
diff --git a/kanji.cabal b/kanji.cabal
--- a/kanji.cabal
+++ b/kanji.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: dd85eac021144e9cb77104be6e89fd2001a5f484e28787ff26645f99992130e0
+-- hash: 66205a8908712746bbacb83edcf1cdf567c460ec2178e9a0ef9ddfc10b0c5ec3
 
 name:           kanji
-version:        3.1.0.1
+version:        3.2.0
 synopsis:       Perform 漢字検定 (Japan Kanji Aptitude Test) level analysis on Japanese Kanji
 description:    Perform 漢字検定 (Japan Kanji Aptitude Test) level analysis on Japanese Kanji.
 category:       Data
diff --git a/lib/Data/Kanji.hs b/lib/Data/Kanji.hs
--- a/lib/Data/Kanji.hs
+++ b/lib/Data/Kanji.hs
@@ -90,8 +90,9 @@
 adultDen m = M.foldl' (+) 0 . M.restrictKeys m $ S.fromList [ Two, PreTwo .. ]
 
 -- | Find the average `Level` of a given set of `Kanji`.
-averageLevel :: [Kanji] -> Float
-averageLevel ks = average . map numericLevel . catMaybes $ map level ks
+averageLevel :: [Kanji] -> Maybe Float
+averageLevel [] = Nothing
+averageLevel ks = Just . average . map numericLevel . catMaybes $ map level ks
   where average ns = foldl' (+) 0 ns / fromIntegral (length ns)
 
 -- | How much of each `Level` is represented by a group of Kanji?
