Oop

OOP design, merge back to Main