implement canvas worker