error handling ++
more validation