implement RequiresPhases except in two places that need further work