finished all required use cases except customized error message