Preheat oven to 350 degrees. Grease two 2- 9 inch cake pans.
In a bowl mix flour, baking powder, baking soda and 1/2 teaspoon salt and whisk a little; set aside.
In another bowl, using clean and dry beaters, beat egg whites and a pinch of salt until they are stiff. Set aside.
In another bowl add sugar, butter and sweetened cream of coconut.
Using an electric mixer beat until fluffy, about 3 minutes. Beat in egg yolks. Beat well after each addition.
Add vanilla and coconut extract. With mixer set on low, alternate between dry ingredients and buttermilk- beating until combined, after each addition.
Gently fold egg whites into cake batter.
Evenly divide batter between prepared cake pans. Bake for 45 minutes. Allow cake to cool in pan for around 20 minutes before gently lifting it out.
While the cakes cool, make the frosting; using an electric mixer beat cream cheese and butter together until they are just combined.
Add coconut, vanilla and coconut extracts and beat just until combined.
Add 2 cups of sugar and beat until all ingredients are just combined and smooth. Add more powdered sugar as needed to achieve desired consistency. If it still seems runny, put in the fridge for 15 minutes.
Sandwich cake with icing and frost on top and sides.
Sprinkle coconut all over and gentle press it so it adheres to decorate. Chill for a good one hour before serving.