added a bunch of validations & throws, added first renderer tests vs mocked ctx/canvas