The combination of threads, remote-procedure-call interfaces, and heavyweight object-oriented design is especially dangerous… if you are ever invited onto a project that is supposed to feature all three, fleeing in terror might well be an appropriate reaction.