modify to OOP
modify to OOP