Finished part 6, supposedly part 3 implemented via 'cheating' due to not
using pointcuts on the class/method for synchronization