change abstract class to protocol, add PhotoTakerUnit