refactored communication