a little more generic requirements