Add(GuiceDatabaseModule).
Add(GuiceUtilitiesModule).
Add(ErrorInterceptor).

Modify(GuiceServletModule): move bindings to corresponding modules.
ModifyGuiceServletModule): add bindings for ErrorInterceptor.
Refactor(CurrentUserServiceTest): rename to UserServiceTest; use ReplyMatchers for assertions.
Modify(TestSuite): add UserServiceTest to suite.
Refactor(UserServiceTest and TransactionInfoServiceTest): move private class FakeRequest to external file.
Refactor(AccountRequestTransaction): rename to AccountRequestTransactionImpl and implement interface 'AccountRequestTransaction'.

Modify(TransactionService): change constructor signature to take as only parameter an AccountRequestTransaction instance.

Add(TransactionServiceTest).
Modify(ErrorInterceptor): add catch clauses for NegativeDepositException and for NegativeWithdrawException.

Modify(ReplyMatchers): add matcher hasStatus.
Modify(ErrorInterceptor): add catch clauses for UnavailableBalanceAmountException and for WithdrawLimitExceededException.
Refactor(ErrorInterceptor): rename to AccountRequestErrorInterceptor.
Add(GsonTransport): skeleton for a Transport implementation.
Add(UserRegistrationServiceTest).

Refactor(UserRegistration): convert to interface and implementation.
Add(GuiceInterceptorsModule).
Modify(GuiceServletModule): move interceptor bindings to GuiceInterceptorsModule.

Add(ValidationErrorInterceptor).
Modify(UserRegistrationService): remove try-catch clauses.

Modify(UserRegistrationServiceTest): implement test cases for a successful registration and for an unsuccessful one with a UserNameExistsException.
Add(InvalidStringFormatException).

Refactor(RegistrationDataValidatorTest): rename to RegexStringValidatorTest.
Modify(RegexStringValidator): throw InvalidStringFormatException on failed validation instead of returning a boolean.

Modify(UserRegistrationService): validate username and password before registering the user.
Refactor(RegexStringValidator): add parameter 'validatorName' to constructor.
Modify(InvalidStringFormatException): change constructor to message-constructor.

Modify(UserRegistrationPage): remove all class contents.
Modify(RegexStringValidatorTest): add test case for exception message to be same as validator name.
Modify(backend/pom.xml): add hibernate-validator dependency.
Modify(backend/pom.xml): add hibernate-validator-annotation-processor dependency.
Refactor(ValidationErrorInterceptor): rename to ValidationInterceptor.
Modify(RegistrationDetailsDTO): add validation annotations to username and password fields.
Add(ValidatorProvider).
Add(ValidationViolationsInterceptor).

Add(RequestParameterValidator).
Add(RequestParameterValidatorImpl).

Modify(UserRegistrationService): switch to using a RequestParameterValidator for validating the registration details.
Modify(RegistrationDetailsDTO): move validation annotations to getters.

Refactor(ValidationInterceptor): rename to RegistrationErrorInterceptor.

Modify(backend/pom.xml): add missing dependency for validation-api.
Remove(InvalidStringFormatException).
Remove(RegexStringValidator).
Remove(StringValidator).
Refactor: remove RegexStringValidatorTest.
Add(ValidationResponseDTO).
Refactor(ValidationResponseDTO): rename to ValidationInfoDTO.
Modify(ValidationViolationsInterceptor): implement building of validationInfoList and sending it in the Reply object.

Delete(GsonTransport).