add "complete" event;
fix event emitter
adjust event handler
fix "complete" event