canvas, context, input handling
merged