Refactored so that connection layer is its own class, so that user program does not have any access to the connection layer private methods or data structures
Merge branch 'connection-layer-class' into develop

* connection-layer-class:
  Refactored so that connection layer is its own class, so that user program does not have any access to the connection layer private methods or data structures