Initial work on abstracting generate command
finish abstracting commands, also abstracted tests and added few more
Merge pull request #1 from AydinHassan/abstract-generate-command

Abstract generate command