first passed tests, minimal OOP