add @emit decorator