use args.reason == eChangeUserEdit for interactive stuff