Make use of status constants
Throw a ConnectionInitializationException instead of UnauthrizedException when server returns 400 - Bad Request
Don't throw an IOException, but wrap it.
modify visibility of perform method. Should not leak into api
Javadoc Updates