extensible enum type emulation