migration to OOP