Extract the Common communication components into a separate library (for ease when adding building new clients)