use NS_ENUM macro for enums
use instancetype for class methods with related return type