preliminary canvas implementation