organized more OOP structure