Little change for protocols.

Little change in the protocol, now the mutable setter are called with a ! and I changed the name of the protocol to make it clear that it is for mutable structure.

Also add protocol for setter in case of immutable structure