Ahhhh... good question!! I think some of the early stuff, like explaining the whole architecture was tricky to write about, only because there is so much to understand before you can really understand any of how it works. It was also tricky to do some of the lifecycle stuff, because some of the methods are so poorly named in the EJB interfaces. The idea of how create() and remove() have COMPLETELY different meanings for Session and Entity beans (and passivate/activate) is challenging to explain, where it would have been MUCH easier if they had used different names... like for Entity beans, if they'd called it insert() and delete() instead of create/remove. Or if activate/passivate in entity beans was toPool() and fromPool(), for example. After all, that's what those methods DO! Most of the time, the more encapsulated topics like transactions and security and environment and exceptions were easier to produce. Other than that, I found explaining some of the CMR and EJB-QL stuff a little tricky for me personally. I was the first instructor at Sun to ever teach hands-on EJB courses to customers, so I've been teaching EJB a looooong time, but the bubble burst as EJB 2.0 was coming out, so I had far less experience teaching CMR and EJB-QL, so it wasn't as natural for me... we had to spend more time thinking of ways to express things clearly, in the EJB 2.0-specific topics. cheers, Kathy p.s. you didn't ask me which were the most fun I think maybe the entity bean synchronization chapter (the whole entity bean lifecycle for CMP) was the most fun to do. I'm not even sure why, but I just think the whole idea of the "bean" being an "actor" playing a role of "being Fred Smith #42" is a fun idea. We anthropomorphize very heavily, and this was a fun place to do it.