Preheat oven to 180oC. Line two 20-cm round cake pans with baking paper on the base. Grease and flour the sides.
In a large bowl, combine the flour, baking powder, salt and shredded coconut.
In a small bowl, combine the coconut milk and vanilla.
Beat the butter and the sugar in an electric mixer until light and fluffy. Add the whole eggs and the egg whites and mix well. Add 1/3 of the flour mixture to the butter mixture and combine with a spatula until just incorporated. Then add 1/2 of the coconut milk mixture and stir until combined. Repeat, adding 1/2 of the remaining flour mixture, then the remaining milk mixture and ending with the flour mixture. Do not over mix.
Divide batter evenly among the cake pans. Bake for 20-25 minutes or until the top of the cakes springs back when pressed lightly in the centre and an inserted skewer comes out clean. Cool completely in the pan then invert the cakes onto a rack.
To make the frosting, beat the butter in an electric mixer until creamy. Add the cheese and vanilla and beat until fully incorporated. Gradually increase mixer speed to high until light and fluffy. Reduce the speed of the mixer to low and gradually add the icing sugar. Beat on high speed until smooth.
Place a cooled cake on a cake stand or platter. Spread 1/3 of the frosting on the cake, then stack the second cake on top but this time, top side down. Coat the top and sides in the remaining frosting. Immediately press the shaved coconut onto the sides and top of the cake so that the coconut adheres.