mutable version protocol added
implementations added