diff --git a/uroboros/command.py b/uroboros/command.py
index 8167aba..963cba2 100644
--- a/uroboros/command.py
+++ b/uroboros/command.py
@@ -134,25 +134,26 @@ class Command(metaclass=abc.ABCMeta):
         parser.set_defaults(func=self.run)
         return parser
 
-    def add_command(self, command: 'Command') -> 'Command':
+    def add_command(self, *commands: 'Command') -> 'Command':
         """
         Add sub command to this command.
-        :param command: An instance of `uroboros.command.Command`
+        :param commands: An instance of `uroboros.command.Command`
         :return: None
         """
-        assert isinstance(command, Command), \
-            "Given command is not an instance of `uroboros.Command` or" \
-            "an instance of its subclass."
-        assert getattr(command, "name", None) is not None, \
-            "{} does not have `name` attribute.".format(
-                command.__class__.__name__)
-        command_id = id(command)
-        if command_id in self._parent_ids or \
-                command_id in self._sub_command_ids:
-            raise errors.CommandDuplicateError(command, self)
-        command.register_parent(self._parent_ids)
-        command.increment_nest(self._layer)
-        self.sub_commands.append(command)
+        for command in commands:
+            assert isinstance(command, Command), \
+                "Given command is not an instance of `uroboros.Command` or" \
+                "an instance of its subclass."
+            assert getattr(command, "name", None) is not None, \
+                "{} does not have `name` attribute.".format(
+                    command.__class__.__name__)
+            command_id = id(command)
+            if command_id in self._parent_ids or \
+                    command_id in self._sub_command_ids:
+                raise errors.CommandDuplicateError(command, self)
+            command.register_parent(self._parent_ids)
+            command.increment_nest(self._layer)
+            self.sub_commands.append(command)
         return self
 
     @property

diff --git a/tests/test_command.py b/tests/test_command.py
index cfa85f1..b80b64f 100644
--- a/tests/test_command.py
+++ b/tests/test_command.py
@@ -134,6 +134,18 @@ class TestCommand(object):
             actual = command._sub_command_ids
             assert actual == expected
 
+    @pytest.mark.parametrize(
+        'root_cmd,add_commands', [
+            (RootCommand(), [SecondCommand()]),
+            (RootCommand(), [SecondCommand(), ThirdCommand()]),
+        ]
+    )
+    def test_multiple_add_command(self, root_cmd, add_commands):
+        root_cmd.add_command(*add_commands)
+        actual = root_cmd._sub_command_ids
+        expected = set([id(c) for c in add_commands])
+        assert actual == expected
+
     def test_add_others(self):
         root = RootCommand()
         with pytest.raises(AssertionError):

Support multiple argument for `add_command()`
## What is this?

`uroboros.Command.add_command()` supports only one `Command` now.
This feature will support multiple `Command`.

Before

```python
root = RootCommand()
root.add_command(ACommand())
root.add_command(BCommand())
root.add_command(CCommand())
```

After

```python
root = RootCommand()
root.add_command(
    ACommand(),
    BCommand(),
    CCommand(),
)
```

## How to implement?

Just use `for` loop
tests/test_command.py::TestCommand::test_multiple_add_command[root_cmd1-add_commands1]
tests/test_command.py::TestCommand::test_build_option[command0] tests/test_command.py::TestCommand::test_build_option[command1] tests/test_command.py::TestCommand::test_build_option[command2] tests/test_command.py::TestCommand::test_validate[command0] tests/test_command.py::TestCommand::test_validate[command1] tests/test_command.py::TestCommand::test_validate[command2] tests/test_command.py::TestCommand::test_increment_nest[command_set0] tests/test_command.py::TestCommand::test_increment_nest[command_set1] tests/test_command.py::TestCommand::test_increment_nest[command_set2] tests/test_command.py::TestCommand::test_register_parent[command_set0] tests/test_command.py::TestCommand::test_register_parent[command_set1] tests/test_command.py::TestCommand::test_register_parent[command_set2] tests/test_command.py::TestCommand::test_add_command[command_set0] tests/test_command.py::TestCommand::test_add_command[command_set1] tests/test_command.py::TestCommand::test_add_command[command_set2] tests/test_command.py::TestCommand::test_multiple_add_command[root_cmd0-add_commands0] tests/test_command.py::TestCommand::test_add_others tests/test_command.py::TestCommand::test_get_all_sub_commands[command_set0] tests/test_command.py::TestCommand::test_get_all_sub_commands[command_set1] tests/test_command.py::TestCommand::test_get_all_sub_commands[command_set2] tests/test_command.py::TestCommand::test_get_all_sub_commands[command_set3] tests/test_command.py::TestCommand::test_get_sub_commands[command_set0-argv0] tests/test_command.py::TestCommand::test_get_sub_commands[command_set1-argv1] tests/test_command.py::TestCommand::test_get_sub_commands[command_set2-argv2] tests/test_command.py::TestCommand::test_get_sub_commands[command_set3-argv3] tests/test_command.py::TestCommand::test_get_sub_commands[command_set4-argv4] tests/test_command.py::TestCommand::test_add_duplicate_command[command_set0] tests/test_command.py::TestCommand::test_add_duplicate_command[command_set1] tests/test_command.py::TestCommand::test_execute[command_set0-root tests/test_command.py::TestCommand::test_execute[command_set1-root tests/test_command.py::TestCommand::test_execute[command_set2-root-False] tests/test_command.py::TestCommand::test_execute[command_set3-root tests/test_command.py::TestCommand::test_execute[command_set4-root tests/test_command.py::TestCommand::test_execute[command_set5-root-False] tests/test_command.py::TestCommand::test_violates_validation_argv[command_set0-root tests/test_command.py::TestCommand::test_violates_validation_argv[command_set1-root tests/test_command.py::TestCommand::test_violates_validation_argv[command_set2-root tests/test_command.py::TestCommand::test_violates_validation_argv[command_set3-root tests/test_command.py::TestCommand::test_violates_validation_argv[command_set4-root tests/test_command.py::TestCommand::test_violates_validation_argv[command_set5-root tests/test_command.py::TestCommand::test_before_validate tests/test_command.py::TestCommand::test_pre_hook[commands0] tests/test_command.py::TestCommand::test_pre_hook[commands1] tests/test_command.py::TestCommand::test_pre_hook[commands2] tests/test_command.py::TestCommand::test_after_validate tests/test_command.py::TestCommand::test_pre_hook_validated[commands0] tests/test_command.py::TestCommand::test_pre_hook_validated[commands1] tests/test_command.py::TestCommand::test_pre_hook_validated[commands2]