enum type implemented