Add some user validation
Complete up to section 6.3.4 of tutorial