this only works assuming we make user creation atomic