diff --git a/musicScroll.cabal b/musicScroll.cabal
--- a/musicScroll.cabal
+++ b/musicScroll.cabal
@@ -4,7 +4,7 @@
 -- http://haskell.org/cabal/users-guide/
 
 name:                musicScroll
-version:             0.3.1.0
+version:             0.3.2.1
 synopsis:            Supply your tunes info without leaving your music player.
 description:         Automatically retrive the lyrics of of your current
                      song on SMPlayer/VLC and update it on each change. See the
@@ -33,7 +33,7 @@
   ghc-options:         -optl-fuse-ld=gold
   ld-options:          -fuse-ld=gold
   hs-source-dirs:      src
-  build-depends:       base <4.14 ,
+  build-depends:       base <4.15,
                        containers,
                        dbus,
                        gi-gtk,
@@ -85,7 +85,7 @@
   main-is:             Main.hs
   -- other-modules:
   -- other-extensions:
-  build-depends:       base,
+  build-depends:       base <4.15,
                        musicScroll
   hs-source-dirs:      app
   default-language:    Haskell2010
diff --git a/src/MusicScroll/DatabaseUtils.hs b/src/MusicScroll/DatabaseUtils.hs
--- a/src/MusicScroll/DatabaseUtils.hs
+++ b/src/MusicScroll/DatabaseUtils.hs
@@ -9,24 +9,24 @@
   , getDBPath
   ) where
 
-import           Prelude hiding (null)
-import           Control.Applicative (Alternative(..))
-import           Control.Exception (evaluate)
-import           Control.Monad.Trans.Reader (ReaderT, ask)
-import           Control.Monad.IO.Class (MonadIO(..))
-import           Control.Concurrent.MVar
-import           Control.DeepSeq (rnf)
-import           Crypto.Hash (SHA1, hashUpdate, hashInit, hashFinalize)
-import           Data.ByteString (hGet, null)
-import           System.IO (withFile, IOMode(..))
-import           Data.Text (Text)
-import           Database.SQLite.Simple
-import           System.Environment.XDG.BaseDir (getUserCacheDir)
-import           Data.Coerce
-import           System.Directory (createDirectory)
+import Prelude hiding (null)
+import Control.Applicative (Alternative(..))
+import Control.Exception (evaluate)
+import Control.Monad.Trans.Reader (ReaderT, ask)
+import Control.Monad.IO.Class (MonadIO(..))
+import Control.Concurrent.MVar
+import Control.DeepSeq (rnf)
+import Crypto.Hash (SHA1, hashUpdate, hashInit, hashFinalize)
+import Data.ByteString (hGet, null)
+import System.IO (withFile, IOMode(..))
+import Data.Text (Text)
+import Database.SQLite.Simple
+import System.Environment.XDG.BaseDir (getUserCacheDir)
+import Data.Coerce
+import System.Directory (createDirectory)
 
-import           MusicScroll.TrackInfo (TrackInfo(..), SongFilePath)
-import           MusicScroll.Providers.Utils (Lyrics(..))
+import MusicScroll.TrackInfo (TrackInfo(..), SongFilePath)
+import MusicScroll.Providers.Utils (Lyrics(..))
 
 getDBLyrics :: SongFilePath -> ReaderT (MVar Connection) IO Lyrics
 getDBLyrics songUrl = snd <$> getDBSong songUrl
diff --git a/src/MusicScroll/EventLoop.hs b/src/MusicScroll/EventLoop.hs
--- a/src/MusicScroll/EventLoop.hs
+++ b/src/MusicScroll/EventLoop.hs
@@ -2,6 +2,7 @@
 
 import Control.Concurrent.Async
 import Control.Concurrent.STM
+import Data.Foldable (traverse_)
 
 import MusicScroll.Pipeline
 
@@ -16,7 +17,7 @@
 eventLoop :: EventLoopState -> IO a
 eventLoop st =
   do newCallback <- atomically . readTBQueue $ evUiCallbacks st
-     maybe (pure ()) cancel (evEphemeral st)
+     traverse_ cancel (evEphemeral st)
      newAsync <- async (newCallback (evAppState st))
      let st' = st { evEphemeral = Just newAsync }
      eventLoop st'
diff --git a/src/MusicScroll/LyricsPipeline.hs b/src/MusicScroll/LyricsPipeline.hs
--- a/src/MusicScroll/LyricsPipeline.hs
+++ b/src/MusicScroll/LyricsPipeline.hs
@@ -25,6 +25,7 @@
 import MusicScroll.Providers.MusiXMatch (musiXMatchInstance)
 
 data SongByOrigin = DB | Web deriving (Show)
+
 data SearchResult = GotLyric SongByOrigin TrackInfo Lyrics
                   | ErrorOn ErrorCause
   deriving (Show)
diff --git a/src/MusicScroll/TrackSuplement.hs b/src/MusicScroll/TrackSuplement.hs
--- a/src/MusicScroll/TrackSuplement.hs
+++ b/src/MusicScroll/TrackSuplement.hs
@@ -10,7 +10,6 @@
 import MusicScroll.TrackInfo ( TrackInfo(..), TrackByPath(..)
                              , TrackIdentifier, pattern OnlyMissingArtist )
 
-
 -- | Invariant, always a valid artist text.
 data TrackSuplement = TrackSuplement
   { tsTitle :: Text
diff --git a/src/MusicScroll/UIContext.hs b/src/MusicScroll/UIContext.hs
--- a/src/MusicScroll/UIContext.hs
+++ b/src/MusicScroll/UIContext.hs
@@ -6,7 +6,7 @@
 import           Data.Maybe (isNothing)
 import           Data.Text as T
 import qualified GI.Gtk as Gtk
-import Pipes
+import           Pipes
 
 import MusicScroll.TrackInfo (TrackInfo(..), TrackByPath(..))
 import MusicScroll.Providers.Utils (Lyrics(..))
diff --git a/src/MusicScroll/Web.hs b/src/MusicScroll/Web.hs
--- a/src/MusicScroll/Web.hs
+++ b/src/MusicScroll/Web.hs
@@ -1,5 +1,4 @@
-{-# language OverloadedStrings, NamedFieldPuns, RecordWildCards #-}
-{-# language TypeApplications, DataKinds #-}
+{-# language RecordWildCards, TypeApplications, DataKinds #-}
 module MusicScroll.Web (getLyricsFromWeb) where
 
 import Control.Exception (try)
