Added user sign up and refactored