better validation and styling