like a switch statement with NSCopying protocol.