refactor data sender