Extract transferrable listener into separate package
Use sync/atomic instead of mutex to protect counter