why having protected mutators ? If the presenter and the io are constructor arguments (which makes totally sense IMO), child classes should call the parent constructor instead of overwriting it and calling setters