discussed w/ David: refactored