move user and user subclasses to seperate file. make user standalone with no external dependencies