diff --git a/call.cabal b/call.cabal
--- a/call.cabal
+++ b/call.cabal
@@ -1,5 +1,5 @@
 name:                call
-version:             0.1.4
+version:             0.1.4.1
 synopsis:            The call game engine
 description:         Call is a minimalistic game engine that supports 2D/3D graphics and sounds.
 homepage:            https://github.com/fumieval/call
@@ -48,15 +48,13 @@
   ghc-options: -Wall -fexcess-precision -O2 -optc-ffast-math
   other-extensions:    Rank2Types, DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveDataTypeable, TemplateHaskell, CPP, GeneralizedNewtypeDeriving, MultiParamTypeClasses, TypeSynonymInstances, ScopedTypeVariables, FlexibleInstances, FlexibleContexts, KindSignatures, TypeFamilies, BangPatterns, ViewPatterns, LambdaCase, DataKinds, GADTs
   build-depends:
-    base >=4.5 && <5,
+    base >=4.6 && <5,
     bindings-portaudio,
     boundingboxes >=0.2 && <0.4,
-    clean-unions >= 0.1 && <0.3,
     colors >=0.3 && <0.4,
     containers >=0.5 && <0.7,
     control-bool >=0.2 && <0.4,
     directory,
-    distributive == 0.4.*,
     filepath,
     freetype2 >=0.1 && <0.2,
     GLFW-b >=1.3 && <2,
diff --git a/src/Call.hs b/src/Call.hs
--- a/src/Call.hs
+++ b/src/Call.hs
@@ -30,7 +30,7 @@
 import Control.Monad
 import Control.Applicative
 import Control.Bool
-import Control.Object hiding (invoke)
+import Control.Object
 import Data.Color
 import Data.Color.Names
 import Data.Monoid
diff --git a/src/Call/Data/Wave.hs b/src/Call/Data/Wave.hs
--- a/src/Call/Data/Wave.hs
+++ b/src/Call/Data/Wave.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE BangPatterns, DeriveFunctor #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Call.Data.Wave
@@ -23,8 +23,18 @@
 import Control.Monad.IO.Class
 import qualified Data.Vector.Unboxed as V
 import GHC.Float
+import Data.Monoid
+import Control.Applicative
 
-newtype Source a = Source (Time -> a)
+newtype Source a = Source (Time -> a) deriving Functor
+
+instance Applicative Source where
+  pure a = Source (const a)
+  Source f <*> Source g = Source (f <*> g)
+
+instance Num a => Monoid (Source a) where
+  mempty = pure 0
+  mappend = liftA2 (+)
 
 readWAVE :: MonadIO m => FilePath -> m (Sample Stereo)
 readWAVE path = liftIO $ do
diff --git a/src/Call/Util/Text.hs b/src/Call/Util/Text.hs
--- a/src/Call/Util/Text.hs
+++ b/src/Call/Util/Text.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE ConstraintKinds, FlexibleContexts, BangPatterns, DeriveFunctor #-}
-module Call.Util.Text (renderer, typewriter, putStr, clear, simple) where
+module Call.Util.Text (renderer, Typewriting(..), typewriter, putStr, clear, simple) where
 import Prelude hiding (putStr)
 import Call.Data.Bitmap (Bitmap(..))
 import Call.Data.Font
