Preheat the oven to 190°C / 170°C fan / gas mark 5.
Cook the macaroni in salted boiling water until just al dente. Drain well and set aside. Do not overcook the pasta, as it will soften further in the oven.
Melt the butter in a saucepan over a medium heat. Stir in the flour and cook for 1 minute, stirring constantly, to make a smooth roux.
Gradually add the milk, whisking well after each addition to avoid lumps. Continue cooking for 4 to 5 minutes until the sauce thickens and coats the back of a spoon.
Stir in the Dijon mustard, then add the grated cheddar and mozzarella. Mix until melted and smooth. Season with salt and black pepper to taste.
Add the cooked macaroni and sliced bacon frankfurters to the cheese sauce. Stir gently until everything is evenly coated.
Transfer the mixture to a medium baking dish and spread it out evenly.
Mix the breadcrumbs, grated cheddar and melted butter in a small bowl. Scatter the topping evenly over the pasta.
Bake for 20 to 25 minutes, until bubbling at the edges and golden on top.
Leave to stand for 5 minutes before serving. Finish with chopped parsley or chives if using.