Grease a 9 inch (23cm) bundt pan.
Yeast: If you're using dried yeast, see step 3. For fresh yeast heat the milk gently in a small saucepan, until it reaches body temperature of 37°C / 98°F. You should be able to comfortably put your finger in it and hold it there. (If it's too hot it will kill the yeast.) Remove from the heat and stir in the yeast. Set aside until needed.
Bread dough: In a large mixing bowl or stand mixer fitted with a dough hook, add the flour, salt and sugar. If you are using dried yeast add the yeast to one side and the sugar and salt to the other.
Make a well in the centre and pour in the milk, add the egg and the butter cut into small pieces, then mix with a spoon or on a slow speed for 2–3 minutes, until combined.
Continue through the sticky stage, until the dough is completely smooth, silky and elastic and pulls away from the sides of the bowl. Form a round ball inside the bowl and then cover with plastic wrap and let the dough rest for about 15 minutes.
Shaping: Lightly flour a work surface and tip out the dough onto it. Divide the dough into 4 pieces and then divide each piece in half and then in half again so you end up with 16 pieces in total. Roll each piece into ball.
Cheese coating: melt the butter in a small pan and then place it in a small bowl with the pesto, giving it a good stir.
In another small bowl add the cheddar cheese and mozzarella. Dip each ball of dough into the butter mixture and then coat with the cheese mixture.
Place balls of dough in the prepared pan. Once all the balls are placed in the pan cover with any remaining butter and cheese left over.
Cover the pan with cling film and let the dough rise for about an hour until it has doubled in size.
Baking: preheat oven to 180°C fan / 400°F / Gas 6.
Bake for 18-20 minutes until golden brown on top.