almost done with all functionality and validations