In a large skillet, over medium high heat, heat oil until it shimmers or a drop of water flicked in it dances.
Add mushrooms and stir.
Add onions and stir occasionally until water is released from mushrooms and they are tender.
Add peppers and ham if using. Stir for a few minutes and remove from heat.
Drain. I usually put a colander or strainer in my sink and dump everything in there, one by one.
Once drained, you will need to put the vegetables into a pot large enough to hold all of your cooked pasta and everything else.
If you are using chicken or ground or sliced sausage, add some more oil to your now empty skillet and wait for it to heat up.
Add chicken pieces, shrimp, bacon, sausage slices or ground sausage and stir regularly until no longer pink and cooked.
Dump meat with vegetables in your colander or strainer and then into your large pot.
In a saucepan or skillet, melt butter over medium low heat.
Add cream, increase temperature to medium high and bring to a gentle boil.
Reduce back to medium low and simmer for 7-9 minutes. Stir regularly.
Taste your sauce. Season with salt and pepper.
In the meantime, cook pasta of your choice according to package directions.
Reserve 1 cup cooking water before draining the pasta to thin your sauce if necessary. When pasta is still in the water and cooked I grab a measuring cup, with a handle, and scoop out about 1 cup of the pasta water and set it aside. Then I drain the pasta in my colander or strainer in the sink and then into the large pot.
Stir alfredo sauce frequently. Add the garlic, parsley and parmesan. Whisk constantly until cheese is totally melted, about 3 minutes.
Pour sauce into your large pot.
Gently toss everything together in your large pot to combine. Serve immediately.