CAKE: Cream butter and shortening together. Add sugar and beat until mixture is smooth and light. Add eggs, one at a time and beat until well blended. Sift flour, baking powder and salt together. Add dry ingredients and milk alternately to creamed mixture. Mix gently until well combined.
Pour batter into two 10 inch or three 9 inch round cake pans that have been lightly buttered and lined with wax paper. Bake at 350° F for 25 to 30 minutes.
Let cool on racks for about 10 minutes then remove from pans and cool completely.
CREAM FILLING: Heat 1 1/2 cups milk in the top of a double boiler, being careful not to scald. Make a paste of remaining milk, cornstarch, sugar and salt. Add egg yolks and stir until well mixed. Add a little hot milk to egg yolk mixture to warm it, then stir into milk in double boiler. Cook over low heat, stirring constantly until filling is thickened and smooth and there is no raw starch taste - about 5 minutes. Stir in flavoring if desired.
To prevent a skin from forming on top, cover with plastic wrap and stir occasionally during cooling.
BUTTERED ALMOND ICING: Heat butter and margarine in a small skillet or heavy saucepan until foam on top turns a golden brown. Stir occasionally. Do not over-brown or the flavor will be burnt rather than roasted. Cool slightly.
Place icing sugar in mixing bowl and mix in cream, then gradually stir in browned butter, scraping pan well. Beat until icing is smooth and creamy.
TO ASSEMBLE CAKE: Slice each 10 inch layer in half horizontally. (do not split 9 inch layers) Top one cake layer with filling and repeat, topping with final cake layer. Cover top and sides of cake with a thin layer of icing. Immediately add almonds to top or sides of cake and refrigerate.
Makes: 8