In a small bowl, dissolve yeast in 1/2 cup warm water as per package directions for the correct temperature to ensure that you keep your yeast alive.
In a large bowl, mix the 1/2 cup milk, sugar, melted butter, salt, and egg. Let it sit if the temperature of this mixture is over 110F otherwise it will kill the yeast. Once at 110F or below, add yeast mixture and mix to combine.
Add in 2 cups of flour and mix until smooth. Add additional flour 1/2 cup (or less) at a time until the dough is easy to handle (the amount of flour that you need will vary).
Roll the dough out onto a lightly floured surface and knead for 5 to 10 minutes. Place the dough into a greased bowl (you can use 1-2 tsp of vegetable oil to coat the bowl you mixed everything in). Cover bowl with saran wrap and then a kitchen towel. Let sit until the dough has doubled in size, approximately 60-90 minutes.
When dough has doubled in size, punch it down. Then put it back on a floured surface and using a rolling pin, roll the dough into a rectangle approximately 15x9 inches.
Spread the melted butter on top of the dough. Mix the cinnamon with the brown sugar and sprinkle the mixture over the butter. Top with walnuts, pecans, raisins, or a combination if you are using them.
From the long edge, tightly roll the dough all the way to the other long edge and pinch dough together to seal. Using a serrated knife, cut the log in half. Then cut each half into half again so that you have four equal pieces. Lining up two pieces at a time, cut each into three rolls so that you have a total of 12.
Coat the bottom of your 9x13" baking dish with some additional melted butter and sugar to coat. Place the cinnamon roll slices close together in the dish (four rows of three) and let them rise until the dough has doubled again, approximately 45 minutes. (If you are making these the night before, once the rolls have doubled in size, cover them in plastic wrap and place them in the refrigerator. In the morning, pull them out to warm to room temperature before baking).
Preheat the over to 350F. Once the rolls have doubled in size, place them in the oven and bake for about 30 minutes or until they are starting to brown.
While the rolls are baking, prepare the icing. Whisk the cream cheese in a stand mixer until creamy. Add the milk and whisk in until combined. Sift in the powdered sugar and whisk until smooth. You can also add some flavorings such as vanilla, a teaspoon of orange extract, or another flavor.
When the rolls are done, let them cool slightly and then top with the icing. Serve warm.
Notes
This recipe makes a lot of frosting, so feel free to halve the frosting ingredients if you do not want a lot.The rolls can be made all the way up to the point before they go in the oven and then left out overnight to save time in the morning.