Wash sweet potatoes and place in a big soup pot covered with water. Turn on medium heat.
After 1/2 hour, test sweet potatoes with fork to see if softened. Continue to cook until soft.
Place cooked sweet potatoes in bowl. Run a knife through skin to let some of the heat out. Wait a few minutes. Then gently peel off skins. Throw away skins
Place sweet potatoes through potato masher. If you don't have a masher, go ahead and place potatoes in mixer. Run mixer, stopping every few minutes to remove sweet potato "strings" from mixer blade. Repeat 2-3 times.
Add milk, eggs, 1 stick of butter, sugar, vanilla, and spices to sweet potatoes. Mix in mixer.
Place sweet potato mixture in greased 2 1/2 quart casserole dish.
You can then add topping and cook or place in fridge for a day until ready to cook.
Combine topping. Mix brown sugar, flour, butter and nuts. Stir together with fork.
Add 1/2 topping to sweet potatoes, poking down into sweet potato mixture with a knife or fork. Spread the remaining topping on top.
Bake at 350 for 45 minutes. Check after 1/2 hour. If sweet potatoes are getting too brown on top, then cover lightly with foil.
Cover sweet potato casserole until ready to serve.