One problem that I have had with distributed object platforms in place in today's world is that they force me out of the freedom in design that local-only OO gives. If I might use EJB as an example, but not to force down the path of WhatsWrongWithEjb, there are two types of beans in the EJB world, Session and Entity. A Session Bean implies that this is a bean that encapsulates business logic; an Entity Bean is indicative of data. What is the major difference between this and procedural code? Wouldn't a better model be to create a distributed object platform that allows for a better encapsulation of the logic where it really belongs?