Require unique username (plus refactoring)