refactor requirements