added enums to handle generation level and granularity - continued building structure to use enum architecture