Combine the flour, sugar, salt and yeast in a bowl. Add the butter and mix or rub in until incorporated.
Add the warm milk and mix until you have a soft dough. Continue to knead the dough for 8-10 minutes (or use the dough hook attachment on your mixer) until it is smooth and elastic. Place the dough in a bowl, cover with a tea towel and leave to rise in a warm place for 1 hour.
Line the base of a 23cm round cake tin with baking paper and grease the tin well. Combine the castor sugar and cinnamon in a small bowl. Punch the dough down lightly and halve. Break each half into 20 small pieces and roll the pieces into balls, (you should now have 40 dough balls).
Melt the butter. Dip each ball into the melted butter, and then roll in the cinnamon sugar mix to coat. Arrange 20 of the dough balls in the base of the tin - I found it easiest to put thirteen balls around the edge, another six on the inside of that ring and one in the middle. (Do not worry if there are little gaps in between the dough balls.) Arrange the remaining 20 balls in a second layer on top. Cover lightly with plastic wrap, place on a baking tray and leave to rise for one hour.
Preheat your oven to 200°C. Place the baking tray in the oven and bake for 25 minutes until golden and baked through. If you tap the bread it should sound hollow. Leave to cool completely.
Prepare the glaze: place the cream cheese in a bowl and whisk until smooth. Sift in the icing sugar, add the vanilla extract and mix everything together until you have a smooth glaze. Pour over the cooled bread and serve.