Working tutorial, adding client-side validation