cleaning up client and adding test cases

List of Issues this fixes on its way:



not sure if we wanted to force having a logger passed in so I created a new constructor.