first implementation  moving methods over the inheritance hierarchy