Split recipe parsing functions, generalise parsing
Replace attributes with function calls