replace respondToSelector -> conformsToProtocol