added OOP style