diff --git a/src/access_api_handler.cc b/src/access_api_handler.cc
index 9fa6df2..7c39b20 100644
--- a/src/access_api_handler.cc
+++ b/src/access_api_handler.cc
@@ -32,8 +32,7 @@
   std::string user_id;
   parameters.GetString(kUserId, &user_id);
   if (!Base64Decode(user_id, user_id_decoded)) {
-    Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
-                       errors::commands::kInvalidPropValue,
+    Error::AddToPrintf(error, FROM_HERE, errors::commands::kInvalidPropValue,
                        "Invalid user id '%s'", user_id.c_str());
     return false;
   }
@@ -41,8 +40,7 @@
   std::string app_id;
   parameters.GetString(kApplicationId, &app_id);
   if (!Base64Decode(app_id, app_id_decoded)) {
-    Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
-                       errors::commands::kInvalidPropValue,
+    Error::AddToPrintf(error, FROM_HERE, errors::commands::kInvalidPropValue,
                        "Invalid app id '%s'", user_id.c_str());
     return false;
   }
diff --git a/src/access_black_list_manager_impl.cc b/src/access_black_list_manager_impl.cc
index e6897ba..992a680 100644
--- a/src/access_black_list_manager_impl.cc
+++ b/src/access_black_list_manager_impl.cc
@@ -95,8 +95,8 @@
   if (expiration <= clock_->Now()) {
     if (!callback.is_null()) {
       ErrorPtr error;
-      Error::AddTo(&error, FROM_HERE, errors::commands::kDomain,
-                   "aleady_expired", "Entry already expired");
+      Error::AddTo(&error, FROM_HERE, "aleady_expired",
+                   "Entry already expired");
       callback.Run(std::move(error));
     }
     return;
@@ -104,8 +104,8 @@
   if (entries_.size() >= capacity_) {
     if (!callback.is_null()) {
       ErrorPtr error;
-      Error::AddTo(&error, FROM_HERE, errors::commands::kDomain,
-                   "blacklist_is_full", "Unable to store more entries");
+      Error::AddTo(&error, FROM_HERE, "blacklist_is_full",
+                   "Unable to store more entries");
       callback.Run(std::move(error));
     }
     return;
@@ -121,8 +121,7 @@
   if (!entries_.erase(std::make_pair(user_id, app_id))) {
     if (!callback.is_null()) {
       ErrorPtr error;
-      Error::AddTo(&error, FROM_HERE, errors::commands::kDomain,
-                   "entry_not_found", "Unknown entry");
+      Error::AddTo(&error, FROM_HERE, "entry_not_found", "Unknown entry");
       callback.Run(std::move(error));
     }
     return;
diff --git a/src/access_black_list_manager_impl_unittest.cc b/src/access_black_list_manager_impl_unittest.cc
index 2b6d66e..fd9f226 100644
--- a/src/access_black_list_manager_impl_unittest.cc
+++ b/src/access_black_list_manager_impl_unittest.cc
@@ -86,10 +86,10 @@
 }
 
 TEST_F(AccessBlackListManagerImplTest, BlockExpired) {
-  manager_->Block(
-      {}, {}, base::Time::FromTimeT(1400000000), base::Bind([](ErrorPtr error) {
-        EXPECT_TRUE(error->HasError("command_schema", "aleady_expired"));
-      }));
+  manager_->Block({}, {}, base::Time::FromTimeT(1400000000),
+                  base::Bind([](ErrorPtr error) {
+                    EXPECT_TRUE(error->HasError("aleady_expired"));
+                  }));
 }
 
 TEST_F(AccessBlackListManagerImplTest, BlockListIsFull) {
@@ -105,11 +105,10 @@
         {8, 8, 8}, base::Time::FromTimeT(1419990000), {});
     EXPECT_EQ(i + 1, manager_->GetSize());
   }
-  manager_->Block(
-      {99}, {8, 8, 8}, base::Time::FromTimeT(1419990000),
-      base::Bind([](ErrorPtr error) {
-        EXPECT_TRUE(error->HasError("command_schema", "blacklist_is_full"));
-      }));
+  manager_->Block({99}, {8, 8, 8}, base::Time::FromTimeT(1419990000),
+                  base::Bind([](ErrorPtr error) {
+                    EXPECT_TRUE(error->HasError("blacklist_is_full"));
+                  }));
 }
 
 TEST_F(AccessBlackListManagerImplTest, Unblock) {
@@ -124,10 +123,9 @@
 }
 
 TEST_F(AccessBlackListManagerImplTest, UnblockNotFound) {
-  manager_->Unblock(
-      {5, 2, 3}, {5, 4, 5}, base::Bind([](ErrorPtr error) {
-        EXPECT_TRUE(error->HasError("command_schema", "entry_not_found"));
-      }));
+  manager_->Unblock({5, 2, 3}, {5, 4, 5}, base::Bind([](ErrorPtr error) {
+                      EXPECT_TRUE(error->HasError("entry_not_found"));
+                    }));
 }
 
 TEST_F(AccessBlackListManagerImplTest, IsBlockedFalse) {
