Adds a menu system, refactors generate process