Fully functional user preferences input with error checking