some additional refactors missed; need tests!!