start of better OOP