Preheat your oven to 350°F (175°C). Grease and flour a 9-inch round cake pan or a 9x9 inch square baking pan.
In a large mixing bowl, whisk together 2 cups of all-purpose flour, 1 cup of granulated sugar, 1 tablespoon of baking powder, 1/2 teaspoon of baking soda, and 1/2 teaspoon of salt.
Add in the softened butter and mix on medium speed until the mixture resembles coarse crumbs.
In a separate bowl, mix the egg, buttermilk, and vanilla extract until well combined. Gradually pour the wet ingredients into the dry ingredients and mix until just combined. Be careful not to overmix.
Pour half of the batter into the prepared cake pan and spread evenly.
In another bowl, combine all the streusel topping ingredients: 1/2 cup flour, 1/2 cup brown sugar, 1 teaspoon cinnamon, and melted butter, mixing until crumbly. If using, fold in the chopped nuts.
Sprinkle half of the streusel mixture over the batter in the pan. Add the remaining batter on top, then finish by sprinkling the rest of the streusel topping over the cake.
Place the cake in the preheated oven and bake for 30-35 minutes or until a toothpick inserted into the center comes out clean.
Remove from the oven and allow to cool in the pan for about 10 minutes before transferring to a wire rack to cool completely.
Notes
Dust with powdered sugar before serving for an elegant finish, and serve with a slice of fresh fruit or a drizzle of honey on the side.