refactor after split emitter,status,cache