Refactor recipes

This should make the addition of additional properties and conditions to
recipes a bit easier.