Set your oven to 350°F (175°C). Grease your cake pans well with butter or non-stick spray, then lightly dust them with flour, or line them with parchment paper for easy removal. In a large bowl, sift together the flour, baking powder, baking soda, and salt. Set this aside.
Using your electric mixer, beat the softened butter and sugar on medium speed until the mixture is light and fluffy, about 3-5 minutes. This step is crucial for a tender crumb.
Crack in the whole eggs and egg yolk one at a time, beating well after each addition. Then mix in the vanilla extract.
Alternately add the dry ingredients and buttermilk to the butter mixture, starting and ending with the dry ingredients. Mix on low speed just until everything is combined—don’t overmix! Add the vegetable oil and gently stir to incorporate.
Pour the batter evenly into your prepared pans. Smooth the tops with a spatula. Bake for 30-35 minutes, or until a toothpick inserted into the center comes out clean.
Remove the cakes from the oven and let them cool in the pans for about 10 minutes. Then turn them out onto a wire rack to cool completely before frosting.
In a large bowl, beat the softened butter until creamy. Gradually add the powdered sugar, about one cup at a time, mixing well after each addition. Pour in the vanilla extract and heavy cream (or milk).
Beat on high speed for about 3 minutes until the frosting is smooth, creamy, and fluffy. If the frosting is too thick, add a little more cream; if too thin, add more powdered sugar.
Once the cakes are completely cool, spread the frosting evenly over the cake layers or the whole cake. Decorate as desired, slice, and enjoy!