Commands module

Continued from #252.