Use web workers, needs more work