i agree its a pain, but is more modular and more efficient, get component by class is ok but it still has to iterate over all components and you have to deal with a fail condition
i went down the BPI route too but scrapped it because you cant bind to events, i just create an component base now and pass that through. it is a hard ref, but its lightweight and you can alter anything in its children anyway
but i too am looking for better ways