Preheat oven to 350F. Melt 1-2 Tbsp. of butter and paint the bundt pan with the melted butter. Add flour and cover all sides. Bang out excess. Set aside.
In a medium bowl add the flour, pudding mix, baking soda, baking powder, salt and orange zest from one orange, whisk together.
Using a standup mixer with a paddle attachment, cream the butter and sugar together until light and fluffy. Add the eggs one at a time and beat well after each addition. Mix in orange juice, orange extract and orange food coloring if using.
Alternatively add the flour and sour cream, starting and ending with the flour in three batches and the sour cream in two. Don't over mix.
Pour the batter into the prepared pan and smooth with a spatula. Bake for 55-60 min. or until a cake tester comes out clean. Let cake cool in the pan for 30 min. and then remove carefully onto a rack to cool completely. Cake will keep well for up to 3 days wrapped in plastic wrap.
For the icing, mix together the butter and cream cheese in a standup mixer with a paddle attachment and whip until creamy. On low add the extract and the icing sugar. Add the cream to get the right consistency to ice. Place the icing in a decorating bag with a #6PT icing tip. Ice using long loops. Decorate with orange zest and orange slices.
Refrigerate if making ahead of time but bring to room temperature before serving.