Use communication class to abstract the transport layer