Extracted Interface from implementation
Added remoteServerException in case of 500 errorcode
Adding project metadata
Internal refactoring
Added maven publishing task