refactoring: assoc takes more args