object oriented magic