Combine the egg whites, sugar and salt in a heatproof bowl.
Place the bowl over a hot water bath (make sure the water doesn't touch the bottom of the bowl) and heat the mixture up until the sugar is melted, mixing all the time.
Once the sugar is melted and the mixture is frothy and hot, remove from heat and using an electric mixer, mix the whites for 8-10 minutes or until the bowl cools down completely and the whites turn into a stiff and glossy meringue.
Add the butter, all at once, and mix on medium speed for 5-7 minutes. Once you add the butter, the mixture will become soupy, but keep mixing. A few minutes later, it will curdle up, but keep mixing. 2 more minutes and it will become creamy and so so delicious!
Spoon the cream cheese in a different bowl and stir in the vanilla and orange zest. Mix it well with an electric mixer until creamy and smooth.
Add the buttercream you made earlier, spoon by spoon and mix until well incorporated.
It's done when you've incorporated all the buttercream.
At this point, if you want it sweeter, you can add some powdered sugar. If not, use it to fill your cakes.
Reserve about ⅓ of the buttercream to frost the cake.
Once covered in buttercream, cover the sides of the cake with toasted shredded coconut or coconut flakes.