spiced things up with lodash
abstract away boilerplate