refactor to keep things DRY