introduce emit on mechanism