updated canvas engine