Add ! for mutable setter and change name, also add protocol for immutable setter