diff --git a/libweave/include/weave/commands.h b/libweave/include/weave/commands.h
index 68751ac..c77abcb 100644
--- a/libweave/include/weave/commands.h
+++ b/libweave/include/weave/commands.h
@@ -14,13 +14,6 @@
 
 namespace weave {
 
-enum class UserRole {
-  kViewer,
-  kUser,
-  kManager,
-  kOwner,
-};
-
 class Commands {
  public:
   using OnCommandCallback = base::Callback<void(Command*)>;
@@ -34,7 +27,6 @@
 
   // Adds a new command to the command queue.
   virtual bool AddCommand(const base::DictionaryValue& command,
-                          UserRole role,
                           std::string* id,
                           ErrorPtr* error) = 0;
 
diff --git a/libweave/libweave.gypi b/libweave/libweave.gypi
index 3229571..bad1412 100644
--- a/libweave/libweave.gypi
+++ b/libweave/libweave.gypi
@@ -18,7 +18,6 @@
       'src/commands/prop_values.cc',
       'src/commands/schema_constants.cc',
       'src/commands/schema_utils.cc',
-      'src/commands/user_role.cc',
       'src/config.cc',
       'src/data_encoding.cc',
       'src/device_manager.cc',
diff --git a/libweave/src/commands/command_definition.cc b/libweave/src/commands/command_definition.cc
index 78121ac..1deb594 100644
--- a/libweave/src/commands/command_definition.cc
+++ b/libweave/src/commands/command_definition.cc
@@ -7,12 +7,27 @@
 #include <vector>
 
 #include <weave/error.h>
+#include <weave/enum_to_string.h>
 
 #include "src/commands/schema_constants.h"
 #include "src/string_utils.h"
 
 namespace weave {
 
+namespace {
+
+const EnumToStringMap<UserRole>::Map kMap[] = {
+    {UserRole::kViewer, commands::attributes::kCommand_Role_Viewer},
+    {UserRole::kUser, commands::attributes::kCommand_Role_User},
+    {UserRole::kOwner, commands::attributes::kCommand_Role_Owner},
+    {UserRole::kManager, commands::attributes::kCommand_Role_Manager},
+};
+}
+
+template <>
+LIBWEAVE_EXPORT EnumToStringMap<UserRole>::EnumToStringMap()
+    : EnumToStringMap(kMap) {}
+
 bool CommandDefinition::Visibility::FromString(const std::string& str,
                                                ErrorPtr* error) {
   // This special case is useful for places where we want to make a command
diff --git a/libweave/src/commands/command_definition.h b/libweave/src/commands/command_definition.h
index 06d7afd..a6a17f8 100644
--- a/libweave/src/commands/command_definition.h
+++ b/libweave/src/commands/command_definition.h
@@ -15,6 +15,13 @@
 
 namespace weave {
 
+enum class UserRole {
+  kViewer,
+  kUser,
+  kManager,
+  kOwner,
+};
+
 // A simple GCD command definition. This class contains the command category
 // and a full object schema describing the command parameter types and
 // constraints. See comments for CommandDefinitions::LoadCommands for the
diff --git a/libweave/src/commands/command_manager.cc b/libweave/src/commands/command_manager.cc
index cf2fc2d..bd7d02c 100644
--- a/libweave/src/commands/command_manager.cc
+++ b/libweave/src/commands/command_manager.cc
@@ -113,6 +113,12 @@
 }
 
 bool CommandManager::AddCommand(const base::DictionaryValue& command,
+                                std::string* id,
+                                ErrorPtr* error) {
+  return AddCommand(command, UserRole::kOwner, id, error);
+}
+
+bool CommandManager::AddCommand(const base::DictionaryValue& command,
                                 UserRole role,
                                 std::string* id,
                                 ErrorPtr* error) {
diff --git a/libweave/src/commands/command_manager.h b/libweave/src/commands/command_manager.h
index c982d2d..ea1392c 100644
--- a/libweave/src/commands/command_manager.h
+++ b/libweave/src/commands/command_manager.h
@@ -36,7 +36,6 @@
 
   // Commands overrides.
   bool AddCommand(const base::DictionaryValue& command,
-                  UserRole role,
                   std::string* id,
                   ErrorPtr* error) override;
   CommandInstance* FindCommand(const std::string& id) override;
@@ -91,6 +90,11 @@
                             CommandDefinition::Visibility visibility,
                             ErrorPtr* error);
 
+  bool AddCommand(const base::DictionaryValue& command,
+                  UserRole role,
+                  std::string* id,
+                  ErrorPtr* error);
+
  private:
   CommandDictionary base_dictionary_;  // Base/std command definitions/schemas.
   CommandDictionary dictionary_;       // Command definitions/schemas.
diff --git a/libweave/src/commands/user_role.cc b/libweave/src/commands/user_role.cc
deleted file mode 100644
index d45d02b..0000000
--- a/libweave/src/commands/user_role.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <weave/error.h>
-
-#include <weave/commands.h>
-#include <weave/enum_to_string.h>
-#include <weave/export.h>
-
-#include "src/commands/schema_constants.h"
-
-namespace weave {
-
-namespace {
-
-const EnumToStringMap<UserRole>::Map kMap[] = {
-    {UserRole::kViewer, commands::attributes::kCommand_Role_Viewer},
-    {UserRole::kUser, commands::attributes::kCommand_Role_User},
-    {UserRole::kOwner, commands::attributes::kCommand_Role_Owner},
-    {UserRole::kManager, commands::attributes::kCommand_Role_Manager},
-};
-
-}  // namespace
-
-template <>
-LIBWEAVE_EXPORT EnumToStringMap<UserRole>::EnumToStringMap()
-    : EnumToStringMap(kMap) {}
-
-}  // namespace weave
