Futher refactor of canvas; fix for not propgating urls; updates to tests.py to reflect these changes