ui validation and some attempt at page scrolling with keyboard. it's not that pretty.