Major update and reoganization

canvas controls now based off generic superclasses to reduce code
duplication
Fix progress canvas