Merged Canvas work into master branch