For better convenience a basic implementation of a synchronous and asynchronous command would be beneficial. A user can just extend them and implement the execute method.
Base implementation should also implement MGCommandData as described in issue #1.