make setters final so copy constructor can't call overridable methods
make methods called by contructor final to prevent calling incompletely constructed objects