Add command interfaces

Adding some interfaces for commands.

I am open to suggestions on this pull request.
What does this interface do ?