added web worker and rudimentary UI