added a lot of error-checking and some streamlining to the signup process