Refactored a lot and added a lot of new logic for different screen sizes and user flows