added OOP magic