So with Enterprise Services they're in essence trying to solve the same problems, you know, how do we enable enterprise developers to build rich componentized applications? And how do we do that in an effective manner where we can get a lot of reuse? In addition, how do I build applications that can take advantage of or participate in distributed transactions? So that's the problem space and both attempt to solve that problem. Enterprise Services is capable of building components that are both stateful and stateless sort of similar to sessions beans, meaning that they could be both stateful and stateless. Now we do provide support, you could do something along the lines of a bean managed entity bean; however, we do not support CMP. We don't support container managed persistence. We do support full pooling, we do support application partitioning, we do support the ability to do process recycling, things you would typically expect from an application server, typically expect from an enterprise component development model. So from that perspective, Enterprise Services and EJB are similar. Now there are some features built into Enterprise Services that are unique, two of which I will note. One is as I mentioned before is queued components. So in EJB you have ths construct of a message-driven bean where I have a separate bean type where I can go in and do asynchronous notification, asynchronous invocation as it were. Now with Enterprise Services, we have a thing called queued components which is kind of a different model. I think it's a model that's very advantageous. In short, I develop a component as I always would, and I simply check a checkbox and that makes it asynchronous and take advantage of a queue. And how this sort of works is I create an instance of a component and then invoke a method on it. Well, rather than you actually creating an instance of that component and then invoking the method, in essence you are getting back a proxy and invoking a method on the proxy which then would serialize that method call, place it inside of a queue, and then we have a listener that will pick it up from the queue and then create the instance of the component and invoke that method. So it gives me a very rich, asynchronous programming model. The next piece is SOAP endpoints. The beauty of that is if I have any component inside of Enterprise Services, I can check a checkbox again or simply put a declarative attribute on it and automatically make it a web service.