sender refactor