factored Recipe object