Company->new->run \/ (inside Company::run) rebless Company object as AcmeLtd, and alter @ISA appropriately \/ (inside same, reblessed object) use newly available methods to get the name of the AcmeLtd subclass that should process the data, then rebless ourselves again into this new class and alter @ISA again \/ (inside same, reblessed object) call newly available processing method