This is the completed code from my first AOP blog post.