New GUI implementation. Full OOP