Aspect-Oriented Programming with AspectJ