Added screen transition and did A LOT of refactoring