diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,14 @@
 The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
 and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html)
 
+## 0.64.10
+### Changed
+- Return empty addresses in xpub balances call.
+
+## 0.64.9
+### Fixed
+- Avoid notifying same transactions in mempool.
+
 ## 0.64.8
 ### Changed
 - Use better Fourmolu format.
diff --git a/haskoin-store.cabal b/haskoin-store.cabal
--- a/haskoin-store.cabal
+++ b/haskoin-store.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           haskoin-store
-version:        0.64.8
+version:        0.64.10
 synopsis:       Storage and index for Bitcoin and Bitcoin Cash
 description:    Please see the README on GitHub at <https://github.com/haskoin/haskoin-store#readme>
 category:       Bitcoin, Finance, Network
@@ -60,7 +60,7 @@
     , hashable >=1.3.0.0
     , haskoin-core >=0.21.1
     , haskoin-node >=0.17.0
-    , haskoin-store-data ==0.64.8
+    , haskoin-store-data ==0.64.10
     , hedis >=0.12.13
     , http-types >=0.12.3
     , lens >=4.18.1
@@ -116,7 +116,7 @@
     , haskoin-core >=0.21.1
     , haskoin-node >=0.17.0
     , haskoin-store
-    , haskoin-store-data ==0.64.8
+    , haskoin-store-data ==0.64.10
     , hedis >=0.12.13
     , http-types >=0.12.3
     , lens >=4.18.1
@@ -177,7 +177,7 @@
     , haskoin-core >=0.21.1
     , haskoin-node >=0.17.0
     , haskoin-store
-    , haskoin-store-data ==0.64.8
+    , haskoin-store-data ==0.64.10
     , hedis >=0.12.13
     , hspec >=2.7.1
     , http-types >=0.12.3
diff --git a/src/Haskoin/Store/BlockStore.hs b/src/Haskoin/Store/BlockStore.hs
--- a/src/Haskoin/Store/BlockStore.hs
+++ b/src/Haskoin/Store/BlockStore.hs
@@ -451,14 +451,12 @@
   when s f
 
 mempool :: (MonadUnliftIO m, MonadLoggerIO m) => Peer -> BlockT m ()
-mempool p = guardMempool $
-  syncMempool $
-    void $
-      async $ do
-        isInSync >>= \s -> when s $ do
-          $(logDebugS) "BlockStore" $
-            "Requesting mempool from peer: " <> peerText p
-          MMempool `sendMessage` p
+mempool p =
+  guardMempool . syncMempool $
+    isInSync >>= \s -> when s $ do
+      $(logDebugS) "BlockStore" $
+        "Requesting mempool from peer: " <> peerText p
+      MMempool `sendMessage` p
 
 processBlock ::
   (MonadUnliftIO m, MonadLoggerIO m) =>
@@ -618,11 +616,9 @@
 addRequestedTx th = do
   qbox <- asks requested
   atomically $ modifyTVar qbox $ HashSet.insert th
-  liftIO $
-    void $
-      async $ do
-        threadDelay 20000000
-        atomically $ modifyTVar qbox $ HashSet.delete th
+  liftIO . void . async $ do
+    threadDelay 20000000
+    atomically $ modifyTVar qbox $ HashSet.delete th
 
 isPending :: MonadIO m => TxHash -> BlockT m Bool
 isPending th = do
@@ -758,7 +754,7 @@
 notify block go = do
   old <- HashSet.union e . HashSet.fromList . map snd <$> getMempool
   x <- go
-  new <- HashSet.fromList . map snd <$> getMempool
+  new <- HashSet.union e . HashSet.fromList . map snd <$> getMempool
   l <- asks (blockConfListener . myConfig)
   forM_ (old `HashSet.difference` new) $ \h ->
     publish (StoreMempoolDelete h) l
diff --git a/src/Haskoin/Store/Web.hs b/src/Haskoin/Store/Web.hs
--- a/src/Haskoin/Store/Web.hs
+++ b/src/Haskoin/Store/Web.hs
@@ -1581,12 +1581,11 @@
   (MonadUnliftIO m, MonadLoggerIO m) => GetXPubBalances -> WebT m [XPubBal]
 scottyXPubBalances (GetXPubBalances xpub deriv (NoCache noCache)) = do
   setMetrics statXpubBalances
-  balances <- filter f <$> lift (runNoCache noCache (xPubBals spec))
+  balances <- lift (runNoCache noCache (xPubBals spec))
   addItemCount (length balances)
   return balances
   where
     spec = XPubSpec xpub deriv
-    f = not . nullBalance . xPubBal
 
 scottyXPubUnspent ::
   (MonadUnliftIO m, MonadLoggerIO m) =>
