In a small bowl, dissolve yeast in warm water and sugar and set aside.
In a KitchenAid with the dough hook attachment or large bowl, mix milk, melted butter, salt, and egg.
Add 2 cups of flour and mix until smooth. Add yeast mixture. Mix in remaining flour until dough is easy to handle.
Knead dough with dough hook or by hand on a lightly floured surface for 5 to 10 minutes. Place in well-greased bowl, cover and let rise until doubled in size, usually 1 to 1 1/2 hours.
To make the filling, whip together the softened butter, brown sugar, and cinnamon.
When dough has doubled in size, punch it down. Roll out on a floured surface into a 15 by 9-inch rectangle. Spread the filling evenly over the rolled dough. If using walnuts, pecans, or raisins, sprinkle them over the filling.
Beginning at one of the long edges, roll the dough into a long tube and pinch the edges closed. Cut the tube into 1 1/2 inch thick slices. Arrange the slices with a little bit of space in a buttered 9×13 inch dish.
Heat oven to 350 degrees F. Cover the rolls and let rise for 45 minutes. Bake for about 30 minutes, or until tops are browned.
While the rolls are baking, whip the cream cheese until fluffy. Add the milk and vanilla and whip until well-combined. Add the powdered sugar 1/2 cup at a time until the frosting has reached desired consistency.
When rolls are done, let them cool for about ten minutes. When they’re warm, not hot, spread the frosting evenly over the tops. Let set for a few more minutes before eating.