Create Connection class, refactor Base class

Highlights:
* Create a separate Connection class
* Refactor Partner class and move majority of code into Base class