rewrote major portions of canteen in order to make it a wrapper around canvas so that property observables can work