move preassert to contract_assert