done with asserts