made lots of structural changes to recipe.py