recipe components refactoring