Cleanup client

Resolves a bunch of issues- still need to test it though.

Resolves #292 #290 #293 (Theoretically...)
Can you add a docstring explaining why this function returns only the first response/what is expected in the first_response?