builder getters, setters, and initters require a mutable self