I agree it's not ideal...we need to find a nice solution though if we want to keep the listeners out of the synchronized block. Just an idea, but maybe keep track of when things happen and pass in a timestamp to the listeners?