recipe refactor