redo how user.py works such that a webui is possible in the future