recursive requirements