diff --git a/libweave/examples/ubuntu/file_config_store.cc b/libweave/examples/ubuntu/file_config_store.cc
index 8cc8fc5..8853bcf 100644
--- a/libweave/examples/ubuntu/file_config_store.cc
+++ b/libweave/examples/ubuntu/file_config_store.cc
@@ -59,36 +59,6 @@
   str << settings;
 }
 
-std::string FileConfigStore::LoadBaseCommandDefs() {
-  return R"({
-    "base": {
-      "updateBaseConfiguration": {
-        "minimalRole": "manager",
-        "parameters": {
-          "localDiscoveryEnabled": "boolean",
-          "localAnonymousAccessMaxRole": [ "none", "viewer", "user" ],
-          "localPairingEnabled": "boolean"
-        },
-        "results": {}
-      },
-      "identify": {
-        "minimalRole": "user",
-        "parameters": {},
-        "results": {}
-      },
-      "updateDeviceInfo": {
-        "minimalRole": "manager",
-        "parameters": {
-          "description": "string",
-          "name": "string",
-          "location": "string"
-        },
-        "results": {}
-      }
-    }
-  })";
-}
-
 std::map<std::string, std::string> FileConfigStore::LoadCommandDefs() {
   return {{"example", R"({
     "base": {
@@ -106,33 +76,6 @@
   })"}};
 }
 
-std::string FileConfigStore::LoadBaseStateDefs() {
-  return R"({
-    "base": {
-      "firmwareVersion": "string",
-      "localDiscoveryEnabled": "boolean",
-      "localAnonymousAccessMaxRole": [ "none", "viewer", "user" ],
-      "localPairingEnabled": "boolean",
-      "network": {
-        "properties": {
-          "name": "string"
-        }
-      }
-    }
-  })";
-}
-
-std::string FileConfigStore::LoadBaseStateDefaults() {
-  return R"({
-    "base": {
-      "firmwareVersion": "unknown",
-      "localDiscoveryEnabled": false,
-      "localAnonymousAccessMaxRole": "none",
-      "localPairingEnabled": false
-    }
-  })";
-}
-
 std::map<std::string, std::string> FileConfigStore::LoadStateDefs() {
   return {};
 }
diff --git a/libweave/examples/ubuntu/file_config_store.h b/libweave/examples/ubuntu/file_config_store.h
index aa1d4fe..f89636d 100644
--- a/libweave/examples/ubuntu/file_config_store.h
+++ b/libweave/examples/ubuntu/file_config_store.h
@@ -21,10 +21,7 @@
   bool LoadDefaults(Settings* settings) override;
   std::string LoadSettings() override;
   void SaveSettings(const std::string& settings) override;
-  std::string LoadBaseCommandDefs() override;
   std::map<std::string, std::string> LoadCommandDefs() override;
-  std::string LoadBaseStateDefs() override;
-  std::string LoadBaseStateDefaults() override;
   std::map<std::string, std::string> LoadStateDefs() override;
   std::vector<std::string> LoadStateDefaults() override;
 
diff --git a/libweave/include/weave/provider/config_store.h b/libweave/include/weave/provider/config_store.h
index d073ca7..30f289c 100644
--- a/libweave/include/weave/provider/config_store.h
+++ b/libweave/include/weave/provider/config_store.h
@@ -35,11 +35,10 @@
   // recommended to protect data, e.g. using encryption.
   virtual void SaveSettings(const std::string& settings) = 0;
 
-  virtual std::string LoadBaseCommandDefs() = 0;
-  virtual std::string LoadBaseStateDefs() = 0;
-  virtual std::string LoadBaseStateDefaults() = 0;
-
   // Returns command definitions as JSON.
+  // Key is unique string which will be used to assign single command handler
+  // later.
+  // Value is JSON with command definition.
   virtual std::map<std::string, std::string> LoadCommandDefs() = 0;
 
   // Returns device state definitions as JSON.
diff --git a/libweave/include/weave/provider/test/mock_config_store.h b/libweave/include/weave/provider/test/mock_config_store.h
index 1a287ee..872e666 100644
--- a/libweave/include/weave/provider/test/mock_config_store.h
+++ b/libweave/include/weave/provider/test/mock_config_store.h
@@ -41,12 +41,7 @@
   MOCK_METHOD0(LoadSettings, std::string());
   MOCK_METHOD1(SaveSettings, void(const std::string&));
 
-  MOCK_METHOD0(LoadBaseCommandDefs, std::string());
   MOCK_METHOD0(LoadCommandDefs, std::map<std::string, std::string>());
-
-  MOCK_METHOD0(LoadBaseStateDefs, std::string());
-  MOCK_METHOD0(LoadBaseStateDefaults, std::string());
-
   MOCK_METHOD0(LoadStateDefs, std::map<std::string, std::string>());
   MOCK_METHOD0(LoadStateDefaults, std::vector<std::string>());
 };
diff --git a/libweave/src/commands/command_manager.cc b/libweave/src/commands/command_manager.cc
index f1ff3d0..95ca291 100644
--- a/libweave/src/commands/command_manager.cc
+++ b/libweave/src/commands/command_manager.cc
@@ -14,6 +14,43 @@
 
 namespace weave {
 
+namespace {
+
+const char kBaseCommandDefs[] = R"({
+  "base": {
+    "updateBaseConfiguration": {
+      "minimalRole": "manager",
+      "parameters": {
+        "localDiscoveryEnabled": "boolean",
+        "localAnonymousAccessMaxRole": [ "none", "viewer", "user" ],
+        "localPairingEnabled": "boolean"
+      },
+      "results": {}
+    },
+    "reboot": {
+      "minimalRole": "user",
+      "parameters": {},
+      "results": {}
+    },
+    "identify": {
+      "minimalRole": "user",
+      "parameters": {},
+      "results": {}
+    },
+    "updateDeviceInfo": {
+      "minimalRole": "manager",
+      "parameters": {
+        "description": "string",
+        "name": "string",
+        "location": "string"
+      },
+      "results": {}
+    }
+  }
+})";
+
+}
+
 CommandManager::CommandManager() {}
 
 CommandManager::~CommandManager() {}
@@ -63,7 +100,7 @@
   LOG(INFO) << "Initializing CommandManager.";
 
   // Load global standard GCD command dictionary.
-  CHECK(LoadBaseCommands(config_store->LoadBaseCommandDefs(), nullptr));
+  CHECK(LoadBaseCommands(kBaseCommandDefs, nullptr));
 
   // Loading the rest of commands.
   for (const auto& defs : config_store->LoadCommandDefs())
diff --git a/libweave/src/commands/command_manager_unittest.cc b/libweave/src/commands/command_manager_unittest.cc
index 7aa560f..8d64650 100644
--- a/libweave/src/commands/command_manager_unittest.cc
+++ b/libweave/src/commands/command_manager_unittest.cc
@@ -116,8 +116,6 @@
 TEST(CommandManager, ShouldLoadStandardAndTestDefinitions) {
   CommandManager manager;
   provider::test::MockConfigStore config_store;
-  EXPECT_CALL(config_store, LoadBaseCommandDefs())
-      .WillOnce(Return(kTestBaseCommands));
   EXPECT_CALL(config_store, LoadCommandDefs())
       .WillOnce(Return(std::map<std::string, std::string>{
           {"category", kTestVendorCommands}, {"test", kTestTestCommands}}));
diff --git a/libweave/src/states/state_manager.cc b/libweave/src/states/state_manager.cc
index a3acc41..0d96175 100644
--- a/libweave/src/states/state_manager.cc
+++ b/libweave/src/states/state_manager.cc
@@ -16,6 +16,33 @@
 
 namespace weave {
 
+namespace {
+
+const char kBaseStateDefs[] = R"({
+  "base": {
+    "firmwareVersion": "string",
+    "localDiscoveryEnabled": "boolean",
+    "localAnonymousAccessMaxRole": [ "none", "viewer", "user" ],
+    "localPairingEnabled": "boolean",
+    "network": {
+      "properties": {
+        "name": "string"
+      }
+    }
+  }
+})";
+
+const char kBaseStateDefaults[] = R"({
+  "base": {
+    "firmwareVersion": "unknown",
+    "localDiscoveryEnabled": false,
+    "localAnonymousAccessMaxRole": "none",
+    "localPairingEnabled": false
+  }
+})";
+
+}
+
 StateManager::StateManager(StateChangeQueueInterface* state_change_queue)
     : state_change_queue_(state_change_queue) {
   CHECK(state_change_queue_) << "State change queue not specified";
@@ -32,14 +59,14 @@
   LOG(INFO) << "Initializing StateManager.";
 
   // Load standard device state definition.
-  CHECK(LoadBaseStateDefinition(config_store->LoadBaseStateDefs(), nullptr));
+  CHECK(LoadBaseStateDefinition(kBaseStateDefs, nullptr));
 
   // Load component-specific device state definitions.
   for (const auto& pair : config_store->LoadStateDefs())
     CHECK(LoadStateDefinition(pair.second, pair.first, nullptr));
 
   // Load standard device state defaults.
-  CHECK(LoadStateDefaults(config_store->LoadBaseStateDefaults(), nullptr));
+  CHECK(LoadStateDefaults(kBaseStateDefaults, nullptr));
 
   // Load component-specific device state defaults.
   for (const auto& json : config_store->LoadStateDefaults())
diff --git a/libweave/src/states/state_manager_unittest.cc b/libweave/src/states/state_manager_unittest.cc
index b7ae37e..8d07e65 100644
--- a/libweave/src/states/state_manager_unittest.cc
+++ b/libweave/src/states/state_manager_unittest.cc
@@ -141,15 +141,10 @@
   provider::test::MockConfigStore config_store;
   StateManager manager(&mock_state_change_queue_);
 
-  EXPECT_CALL(config_store, LoadBaseStateDefs())
-      .WillOnce(Return(kBaseDefinition));
-
   EXPECT_CALL(config_store, LoadStateDefs())
       .WillOnce(Return(std::map<std::string, std::string>{
           {"powerd", R"({"power": {"battery_level":"integer"}})"}}));
 
-  EXPECT_CALL(config_store, LoadBaseStateDefaults())
-      .WillOnce(Return(kBaseDefaults));
   EXPECT_CALL(config_store, LoadStateDefaults())
       .WillOnce(Return(std::vector<std::string>{
           R"({"power": {"battery_level":44}})"}));
@@ -158,14 +153,14 @@
 
   auto expected = R"({
     'base': {
-      'manufacturer': 'Test Factory',
-      'serialNumber': 'Test Model'
+      'firmwareVersion': 'unknown',
+      'localAnonymousAccessMaxRole': 'none',
+      'localDiscoveryEnabled': false,
+      'localPairingEnabled': false,
+      'network': {}
     },
     'power': {
       'battery_level': 44
-    },
-    'device': {
-      'state_property': ''
     }
   })";
   EXPECT_JSON_EQ(expected, *manager.GetStateValuesAsJson());
diff --git a/libweave/src/weave_unittest.cc b/libweave/src/weave_unittest.cc
index fab3fad..bdb70e6 100644
--- a/libweave/src/weave_unittest.cc
+++ b/libweave/src/weave_unittest.cc
@@ -41,49 +41,16 @@
 
 const char kCategory[] = "powerd";
 
-const char kBaseCommandDefs[] = R"({
-  "base": {
-    "reboot": {
-      "parameters": {"delay": "integer"},
-      "results": {}
-    },
-    "shutdown": {
-      "parameters": {},
-      "results": {}
-    }
-  }
-})";
-
 const char kCommandDefs[] = R"({
   "base": {
     "reboot": {},
-    "shutdown": {}
-  }
-})";
-
-const char kBaseStateDefs[] = R"({
-  "base": {
-    "firmwareVersion": "string",
-    "localDiscoveryEnabled": "boolean",
-    "localAnonymousAccessMaxRole": [ "none", "viewer", "user" ],
-    "localPairingEnabled": "boolean",
-    "network": {
-      "properties": {
-        "name": "string"
-      }
+    "_shutdown": {
+      "parameters": {},
+      "results": {}
     }
   }
 })";
 
-const char kBaseStateDefaults[] = R"({
-  "base": {
-    "firmwareVersion": "",
-    "localDiscoveryEnabled": false,
-    "localAnonymousAccessMaxRole": "none",
-    "localPairingEnabled": false
-  }
-})";
-
 const char kDeviceResource[] = R"({
   "kind": "clouddevices#device",
   "id": "DEVICE_ID",
@@ -192,23 +159,14 @@
   void InitConfigStore() {
     EXPECT_CALL(config_store_, SaveSettings("")).WillRepeatedly(Return());
 
-    EXPECT_CALL(config_store_, LoadBaseCommandDefs())
-        .WillOnce(Return(kBaseCommandDefs));
-
     EXPECT_CALL(config_store_, LoadCommandDefs())
         .WillOnce(Return(
             std::map<std::string, std::string>{{kCategory, kCommandDefs}}));
 
-    EXPECT_CALL(config_store_, LoadBaseStateDefs())
-        .WillOnce(Return(kBaseStateDefs));
-
     EXPECT_CALL(config_store_, LoadStateDefs())
         .WillOnce(Return(
             std::map<std::string, std::string>{{kCategory, kStateDefs}}));
 
-    EXPECT_CALL(config_store_, LoadBaseStateDefaults())
-        .WillOnce(Return(kBaseStateDefaults));
-
     EXPECT_CALL(config_store_, LoadStateDefaults())
         .WillOnce(Return(std::vector<std::string>{kStateDefaults}));
   }
