AspectJ in action : practical aspect-oriented programming