working on interfaces and enum