adding more assertions and explanations