refactor methods out to computed properties and observers