AspectJ in action :practical aspect-oriented programming