Place the whole coconut onto a folded towel set down in a large bowl. Find the 3 eyes on 1 end of the coconut and using a nail or screwdriver and hammer or meat mallet, hammer holes into 2 of the eyes. Turn the coconut upside down over a container and drain the water from the coconut. Store the water in an airtight container and set aside. Place the coconut onto a 1/2 sheet pan and bake in the oven at 375 degrees for 15 minutes. Remove from the oven. The coconut should have cracked in several places. Using an oyster knife or other dull blade, separate the hard shell from the brown husk. Carefully peel the brown husk from the coconut meat. Rinse the coconut meat under cool water and pat dry. Break the meat into 2 to 3-inch pieces. With the grater disk attached to a food processor and grate the coconut or you can use the smallest shredder side of a tradional box grater. To make fresh coconut milk: 1/2 cup freshly grated coconut and 1/2 cup boiling 2 percent milk Place 1/2 cup of the shredded coconut into a small mixing bowl and pour over the boiling milk. Stir to combine. Cover tightly and allow to sit for 1 hour. Transfer the mixture to your blender and blend for 1 minute. Place a tea towel or cheese cloth over a small bowl and carefully pour the mixture into it. Gather up the edges and squeeze until all of the liquid has been removed. Discard the coconut. For the cream: Repeat the same procedure as above 1 cup of freshly grated coconut and 1/2 cup of boiling 2 percent milk For the cake: Preheat the oven to 350 degrees F. Lightly oil or spray 2 (9-inch) cake pans and set aside. Place the flour, baking powder and salt into a large mixing bowl and whisk to combine. Combine the coconut milk and coconut cream in small bowl and set aside. Place the butter into a mixing bowl and cream on medium speed until fluffy, approximately 1 minute. Decrease the speed to low and gradually add the sugar slowly over 1 to 2 minutes. Once all of the sugar has been added, stop the mixer and scrape down the sides. Turn the mixer back on to medium speed and continue creaming until the mixture noticeably lightens in texture and increases slightly in volume, approximately 2 to 3 minutes. Stir in the coconut extract. With the mixer on low speed, add the flour mixture alternately with the milk mixture to the butter and sugar in 3 batches, ending with the milk mixture. Do not over mix. In a separate bowl, whisk the egg whites until they form stiff peaks. Fold the egg whites into the batter, just until combined. Divide the batter evenly between the pans and bang the pans on the counter top several times to remove any air and to distribute the batter evenly in the pan. Place in the oven on the middle rack. Bake for 40 minutes or until the cake is light golden in color. Cool the cake in the pans for 10 minutes then remove and transfer to a cooling rack. Once the cakes have cooled completely cut across the equator of each to form 4 layers. Place the 1/3 cup coconut water into a small spritz bottle and spray evenly onto the cut side of the 4 layers. If you do not have a spritz bottle you may brush the coconut water on with a pastry brush. Allow to sit while preparing the frosting. For the frosting: Bring 1 quart of water to a boil in a large saucepan over high heat. Decrease the heat to medium to maintain a steady simmer. In the meantime, place the egg whites, sugar, coconut water, cream of tartar and salt into a medium size-mixing bowl. Place the bowl over the simmering water and immediately begin beating with an electric hand mixer set to low speed. Beat for 1 minute and then increase the speed to high and continue to beat for 5 minutes. Remove from the heat and beat in the coconut extract for 1 minute. Allow the frosting to sit for 5 minutes before using. Place approximately 3/4 cup of the frosting on the first layer of cake, sprinkle with 1/2 cup coconut and top with the next layer. Repeat until you reach the top layer. Frost the top and sides of the cake and sprinkle with the remaining coconut. Refrigerate for at least 30 minutes before serving.