Added python bindings and refactored client

:100: