first pass at protocolizing canvas lifecycle
remove err log