For the cake:
Preheat oven to 350 degrees F. Grease and flour three 9-inch cake pans.
Using an electric mixer, cream butter until fluffy. Add granulated sugar and continue to cream well for 6 to 8 minutes. Add eggs 1 at a time, beating well after each addition. Add flour and milk alternately to creamed mixture, beginning and ending with flour. Add vanilla and continue to beat until just mixed. Divide batter equally among prepared pans. Level batter in each pan by holding pan 3 or 4-inches above counter dropping it flat onto counter. Do this several times to release air bubbles and assure you of a more level cake. Bake for 25 minutes or until golden brown.
For the filling:
While cake is baking, in a saucepan, combine butter, brown sugar, and milk. Cook and stir over medium heat for 3 to 5 minutes. Remove from heat and stir in vanilla.
Remove cake layers from oven and allow cake to remain in pans as you prepare to stack and fill. Remove first layer and invert onto cake plate. Pierce cake layer with a toothpick over entire surface. Spread 1/3 of filling mixture on cake layer. Top with second layer, repeat process. Top with last layer and repeat process again.
For the frosting:
Melt butter in a saucepan over medium heat and stir in brown sugar and cream. Bring to a boil, and transfer to a mixing bowl. Add confectioners' sugar and vanilla. Beat with a handheld electric mixer until it reaches a spreading consistency. At this time it may be necessary to add a tablespoon of heavy cream, or more, if frosting gets too thick. Just be sure to add cream is small amounts because you can always "add to", but you can't take away. Frost cake and sprinkle top with chopped nuts, if desired.
As I stack layers together, I stick them with toothpicks to prevent cake from shifting.