refactor Communication