If the user already exists, we should make the fewest changes to the system possible.

I think we should do two things:
1. Make the user creation require a command-line switch.
2. Fail early if the user already exists (make fewest changes to system)