refactor to prep for executor