diff --git a/src/access_api_handler.cc b/src/access_api_handler.cc
index e03a548..9fa6df2 100644
--- a/src/access_api_handler.cc
+++ b/src/access_api_handler.cc
@@ -178,13 +178,9 @@
     return;
   }
 
-  if (!manager_->Unblock(user_id, app_id, &error)) {
-    command->Abort(error.get(), nullptr);
-    return;
-  }
-
-  UpdateState();
-  command->Complete({}, nullptr);
+  manager_->Unblock(user_id, app_id,
+                    base::Bind(&AccessApiHandler::OnCommandDone,
+                               weak_ptr_factory_.GetWeakPtr(), cmd));
 }
 
 void AccessApiHandler::List(const std::weak_ptr<Command>& cmd) {
diff --git a/src/access_api_handler_unittest.cc b/src/access_api_handler_unittest.cc
index 44c83e2..a142735 100644
--- a/src/access_api_handler_unittest.cc
+++ b/src/access_api_handler_unittest.cc
@@ -29,9 +29,12 @@
                     const base::Time&,
                     const DoneCallback&));
   MOCK_METHOD3(Unblock,
-               bool(const std::vector<uint8_t>&,
+               void(const std::vector<uint8_t>&,
                     const std::vector<uint8_t>&,
-                    ErrorPtr*));
+                    const DoneCallback&));
+  MOCK_CONST_METHOD2(IsBlocked,
+                     bool(const std::vector<uint8_t>&,
+                          const std::vector<uint8_t>&));
   MOCK_CONST_METHOD0(GetEntries, std::vector<Entry>());
   MOCK_CONST_METHOD0(GetSize, size_t());
   MOCK_CONST_METHOD0(GetCapacity, size_t());
@@ -203,7 +206,8 @@
 TEST_F(AccessApiHandlerTest, Unblock) {
   EXPECT_CALL(access_manager_, Unblock(std::vector<uint8_t>{1, 2, 3},
                                        std::vector<uint8_t>{3, 4, 5}, _))
-      .WillOnce(Return(true));
+      .WillOnce(WithArgs<2>(
+          Invoke([](const DoneCallback& callback) { callback.Run(nullptr); })));
   EXPECT_CALL(access_manager_, GetSize()).WillRepeatedly(Return(4));
 
   AddCommand(R"({
diff --git a/src/access_black_list_manager.h b/src/access_black_list_manager.h
index ed30839..b56226a 100644
--- a/src/access_black_list_manager.h
+++ b/src/access_black_list_manager.h
@@ -14,8 +14,14 @@
 class AccessBlackListManager {
  public:
   struct Entry {
+    // user_id is empty, app_id is empty: block everything.
+    // user_id is not empty, app_id is empty: block if user_id matches.
+    // user_id is empty, app_id is not empty: block if app_id matches.
+    // user_id is not empty, app_id is not empty: block if both match.
     std::vector<uint8_t> user_id;
     std::vector<uint8_t> app_id;
+
+    // Time after which to discard the rule.
     base::Time expiration;
   };
   virtual ~AccessBlackListManager() = default;
@@ -24,14 +30,27 @@
                      const std::vector<uint8_t>& app_id,
                      const base::Time& expiration,
                      const DoneCallback& callback) = 0;
-  virtual bool Unblock(const std::vector<uint8_t>& user_id,
+  virtual void Unblock(const std::vector<uint8_t>& user_id,
                        const std::vector<uint8_t>& app_id,
-                       ErrorPtr* error) = 0;
+                       const DoneCallback& callback) = 0;
+  virtual bool IsBlocked(const std::vector<uint8_t>& user_id,
+                         const std::vector<uint8_t>& app_id) const = 0;
   virtual std::vector<Entry> GetEntries() const = 0;
   virtual size_t GetSize() const = 0;
   virtual size_t GetCapacity() const = 0;
 };
 
+inline bool operator==(const AccessBlackListManager::Entry& l,
+                       const AccessBlackListManager::Entry& r) {
+  return l.user_id == r.user_id && l.app_id == r.app_id &&
+         l.expiration == r.expiration;
+}
+
+inline bool operator!=(const AccessBlackListManager::Entry& l,
+                       const AccessBlackListManager::Entry& r) {
+  return !(l == r);
+}
+
 }  // namespace weave
 
 #endif  // LIBWEAVE_SRC_ACCESS_BLACK_LIST_H_
