1. Clean and peel carrots and chop into large pieces.
2. Steam carrots for 15 minutes, or until very tender.
3. While the carrots are warm, puree in a food processor or blender until mostly smooth. Set aside to cool.
4. Sift together flours, sugar, salt, baking soda and spices in a large mixing bowl.
5. Add oil, melted butter, buttermilk, eggs, vanilla and molasses. Mix until well combined and no lumps remain.
6. Fold in pureed carrots and pineapple as well as walnuts, coconut, ginger and raisins if using.
7. For a cake, pour batter into 2 9-inch greased pans and bake at 350 degrees for 40-50 minutes. Let cool in pan for about 10 minutes, then transfer to wire rack to cool completely. For cupcakes, pour batter into cupcake pans and bake for 18-22 minutes. Allow to cool in pans for about 5 minutes, then remove to wire rack.
1. Beat the cream cheese and butter until smooth.
2. Slowly add 3 cups of powdered sugar. Mix until combined.
3. Mix in the vanilla extract.
4. Add the rest of the powdered sugar and mix until smooth.