adds support for creating client instances

This adds support for the issue addressed in #4. I pushed a branch and I'm creating a pull request to make sure this is how we'd like to manage the issue going forward before merging to master.