initial task abstractions and implementation of the 'command' module
actually try the out the task