Preheat the oven to 350F.
In the bowl of a mixer, cream together the butter and sugar, scraping down the sides occasionally. Add the vanilla and egg, mix in.
In a separate bowl, mix together the flour, baking powder and salt. Add one half of it to the mixer, and when mostly combined, add the milk. Once the milk is mostly incorporated, add the rest of the flour.
To make filling: in a small bowl, pinch together the softened butter, flour, sugar and cinnamon until soft crumbs form.
To make topping: add the butter, flour, brown sugar and cinnamon to a food processor and pulse until coarse crumbs form (You can cut in with forks or a pastry cutter, but I am not patient enough for that!).
Grease a 9x9 baking pan. Pour in ½ of cake batter, and spread to all four corners. Sprinkle the filling over top, then pour in remaining cake batter, and spread carefully across the top, disturbing the filling layer as little as possible (an offset spatula works well for this).
Sprinkle the topping over the top and press lightly so it adheres.
Bake in preheated oven for 45-50 minutes, until a toothpick inserted comes out clean. Cool to warm on wire rack before serving.