Ideally there should be two seperate clients: one "stateless" and one "stateful", stateful one basically being a batteries included higher level API while the stateless one is for people who don't need the full stateful client (or they just want more flexibility).