reworked emit interface