Overhaul with UI seperation