Clean interfaces with betther methods and error messages.
Add a factory for building the requests. Ensures only valid data is sent.