refactroing; experiments with protocols