oop hierarchy, self, singleton method