implementing OOP :-/