interfaces and enum