implemented canvas and text