Add custom errors.
Handle specific error codes from response.
Split out URI building into separate methods.
Nest modules under namespace.