canvas self contained