error handling on sevrer side
error handling on sevrer side 2
error handling on client side