Note: The butter and pastry cream must be at same temperature, about 75 degrees F, when they are combined. You can adjust timing as needed to bring butter and pastry to the same temperature before they are combined. The butter may be cut into small pieces to hasten softening as long as it still has body and hasn't started to melt. The pastry cream can be cooled as quickly as necessary as long as you don't allow a skin to form. If the pastry cream is warmer than the butter, it will melt the butter and you will have soup.
Before assembling the buttercream, place 1 cup of the milk in a small mixing bowl and set aside. Measure remaining 2 cups of milk into top of a double boiler. I did not use a double boiler but put on stove and watched carefully on medium low. Add the sugar to the milk and stir until dissolved. Heat the mixture over boiling water, stirring once or twice, until hot and steaming, about 6 minutes.
While the milk mixture is heating, whisk the egg yolks into the reserved milk, then whisk in the cornstarch until the mixture is smooth and the cornstarch is well incorporated. When the milk-sugar mixture is hot, slowly add about half of it to the cornstarch mixture, whisking continuously. Whisk this back into the mixture and continue whisking vigorously until the pastry cream thickens, about 5 to 6 minutes. Once it has thickened, remove it from the heat, whisk in the vanilla and almond extract, if using, and transfer the pastry cream to another bowl to speed cooling. To keep the cream from forming a skin while cooling, leave the bowl uncovered and whisk every 5 minutes or so until cool, about 1 hour. Using a larger bowl with more surface area can speed up the cooling process, but it is crucial that you don't allow the cream to develop a skin. To cool without stirring, cover the bowl immediately with plastic wrap and let it sit for about 3 hours before making the buttercream.
When both the butter the pastry cream are at about 75 degrees F, complete the buttercream. In the bowl of a mixer fitted with beaters, beat butter, scraping bowl and beater twice, until very fluffy, at least 2 minutes. With the mixer running on medium speed, add the pastry cream steadily, about 2 tablespoons at a time, just barely incorporating each addition. As soon as all the pastry cream is incorporated, stop the mixer and again scrape down the bowl and beater well. Mix on medium high speed for 15 seconds.
Use the buttercream as recipe directs or store in an odor free airtight container in the refrigerator for up to 3 days. Another easy way to store buttercream is to divide it between 2 or 3 sheets of plastic wrap, then tightly wrapping and refrigerating the pats. The buttercream may also be frozen for up to 2 weeks, but tends to become a little watery after freezing. Buttercream that has been refrigerated or frozen must be reheated to achieve its original smooth consistency. If buttercream has been frozen, thaw it overnight in refrigerator and let it come to room temperature before reheating.
To reheat, place buttercream in a large wide mouthed metal mixing bowl. Break the buttercream apart into chunks with a spoon or whisk. Place bowl directly on burner over medium low heat and whisk continuously. When the buttercream in bottom of bowl starts to melt, remove it from the heat and using a whisk, incorporate the melted portion into the rest of the icing. Continue to warm while whisking, always removing the buttercream from the heat as it starts to melt. As the buttercream heats up, it will start to look separated and resemble cottage cheese, which is all right. Just keep whisking and just as your arm gets tired, after about 3 minutes, the buttercream will begin to come together and will look like it did when it was first made. The reheated buttercream can be refrigerated and reheated several times without damaging its consistency.
To flavor buttercream or whipped cream: Different flavors of icing can be created. To flavor icing, first whisk your choice of flavoring into about 1 cup of icing to make it easier to incorporate. Blend or fold the mixture into the remaining icing. Experiment with the following flavors, using the amounts given to flavor 1 cup of buttercream or whipped cream.
Caramel: Add ¼ cup caramel ice cream topping Chocolate: add ½ cup chocolate ganache. The ganache should be completely cool, but not stiff or hard. Hazelnut: add ¼ cup Nutella hazelnut spread. Raspberry, apricot or strawberry: add ¼ cup good quality jam. Praline: add 1/3 cup hazelnut nougat Grand Marnier, Framboise, Frangelico or any liqueur: substitute for the vanilla