Pineapple Coconut Cake:
Preheat oven to 350 degrees F and grease and flour 3 8″ round cake pans.
In a large bowl, whisk together the oil, sour cream and sugar.
Add eggs, vanilla, coconut extract and coconut milk and whisk until combined.
Whisk in baking powder, baking soda and salt until completely combined.
Stir in flour until just incorporated. Slowly stir in pineapple and coconut.
Divide between prepared pans and bake for 18-20 minutes, until a toothpick inserted in the center comes out clean or with moist crumbs.
Let cakes cool in the pan for 20 minutes before removing to a wire rack to cool completely. Assemble or wrap and refrigerate or freeze.
Stir together crushed pineapple with juice, milk and pudding mix until smooth.
Set aside until thickened.
Coconut Cream Cheese Frosting
In a large bowl, beat cream cheese with an electric mixer until smooth. Add the butter and beat on high until smooth.
Add the vanilla, coconut extract and salt and beat until combined.
Add the powdered sugar in 3 or 4 batches, beating well after each addition and tasting near the end to ensure the frosting reaches your desired level of sweetness. Add a touch more salt or coconut extract if desired.
Plate on cake layer on a cake plate and spread with half of the pineapple filling, being sure to leave a border around the edge.
Place another cake layer on top and spread with remaining pineapple filling.
Top with last cake layer and frost as desired, decorating with remaining frosting and toasted coconut as desired.
You can serve immediately, but I recommend refrigerating 4-6 hours as it will be easier to slice.