diff --git a/src/Data/Unique/Really.hs b/src/Data/Unique/Really.hs
--- a/src/Data/Unique/Really.hs
+++ b/src/Data/Unique/Really.hs
@@ -3,7 +3,7 @@
     Unique, newUnique, hashUnique,
     ) where
 
-import Control.Applicative
+import Control.Applicative ((<$>))
 import Data.Hashable
 
 #if UseGHC
diff --git a/src/Data/Vault/ST/ST.hs b/src/Data/Vault/ST/ST.hs
--- a/src/Data/Vault/ST/ST.hs
+++ b/src/Data/Vault/ST/ST.hs
@@ -13,8 +13,9 @@
     ) where
 
 import Data.Monoid (Monoid(..))
+import Data.Semigroup (Semigroup((<>)))
 import Prelude hiding (lookup)
-import Control.Applicative hiding (empty)
+import Control.Applicative ((<$>))
 import Control.Monad.ST
 import Control.Monad.ST.Unsafe as STUnsafe
 
@@ -37,6 +38,9 @@
 {-----------------------------------------------------------------------------
     Vault
 ------------------------------------------------------------------------------}
+
+instance Semigroup (Vault s) where
+    (<>) = union
 
 instance Monoid (Vault s) where
     mempty = empty
diff --git a/vault.cabal b/vault.cabal
--- a/vault.cabal
+++ b/vault.cabal
@@ -1,5 +1,5 @@
 Name:               vault
-Version:            0.3.0.7
+Version:            0.3.1.0
 Synopsis:           a persistent store for values of arbitrary types
 Description:
   A /vault/ is a persistent store for values of arbitrary types.
@@ -39,8 +39,9 @@
 
 Library
     hs-source-dirs:     src
-    build-depends:      base >= 4.5 && < 4.11,
+    build-depends:      base >= 4.5 && < 4.12,
                         containers >= 0.4 && < 0.6,
+                        semigroups >= 0.1 && < 1.0,
                         unordered-containers >= 0.2.3.0 && < 0.3,
                         hashable >= 1.1.2.5 && < 1.3
 
