Abstracting Communication in Distributed Agent-Based Systems