refactor *again* as I learn