Implemented canvas approach