canvas draw + typed callbacks