start of requirement checking