these requirements should be cached somewhere to prevent having to do this again