mostly finished with user validation and redirects