Issue #38: synchronizing widget listener callbacks

Also, now using distinguished internal object for locking