Finish user signup - add tests and cleaner code