diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
 # fuzzyset-haskell
 
+[![Haskell CI](https://github.com/laserpants/fuzzyset-haskell/actions/workflows/haskell.yml/badge.svg)](https://github.com/laserpants/fuzzyset-haskell/actions/workflows/haskell.yml)
 [![License](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
 [![Language](https://img.shields.io/badge/language-Haskell-yellow.svg)](https://www.haskell.org/)
 [![Hackage](https://img.shields.io/hackage/v/fuzzyset.svg)](http://hackage.haskell.org/package/fuzzyset)
diff --git a/fuzzyset.cabal b/fuzzyset.cabal
--- a/fuzzyset.cabal
+++ b/fuzzyset.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           fuzzyset
-version:        0.3.0
+version:        0.3.1
 synopsis:       Fuzzy set data structure for approximate string matching
 description:    Please see the README on GitHub at <https://github.com/laserpants/fuzzyset-haskell#readme>
 category:       Data
@@ -31,7 +31,6 @@
       Data.FuzzySet.Monad
       Data.FuzzySet.Simple
       Data.FuzzySet.Utils
-      Main
   other-modules:
       Paths_fuzzyset
   autogen-modules:
diff --git a/src/Main.hs b/src/Main.hs
deleted file mode 100644
--- a/src/Main.hs
+++ /dev/null
@@ -1,20 +0,0 @@
- {-# LANGUAGE OverloadedStrings #-}
- module Main where
-
- import Control.Monad.Trans.Class (lift)
- import Data.Text (Text)
- import Data.FuzzySet (FuzzySearchT, add_, closestMatch, runDefaultFuzzySearchT)
-
- findMovie :: Text -> FuzzySearchT IO (Maybe Text)
- findMovie = closestMatch
-
- prog :: FuzzySearchT IO ()
- prog = do
-   add_ "Jurassic Park"
-   add_ "Terminator"
-   add_ "The Matrix"
-   result <- findMovie "The Percolator"
-   lift (print result)
-
- main :: IO ()
- main = runDefaultFuzzySearchT prog
