enum tricks, enum strategy pattern added