first stab at organizing shared canvase callbacks