Use Worker class and improve UX