implement final version of GoalCommunicator