reorder checks, user should come first