Alternative to virtual struct and functions by extending enums