refactor touch sender