add event and ui protocols
add web worker support