Generalising recipe rendering