enum and overloading