Grate the cheddar, gruyere and parmesan and have it ready for a bit later.
In a pan, on medium-high heat, add a large knob of butter. Once it melts, add the sliced onion and let cook until soft and caramalised (approx. 10 mins).
Next, add 3 tbsp flour and stir in with the onions. Then slowly pour in the milk a little at a time, whisking all the time (this is making a roux). Simmer gently.Cook the macaroni until half cooked. Drain but keep a little of the starchy water to the side.
Add the cheddar, gruyere and a little parmesan (keep the rest for later) to the roux and stir until it's melted in and a gooey sauce. Do this off the heat. Add a tsp of mustard and Worcestershire sauce, then add a little of the starchy pasta water to help make the sauce nice and creamy.Pour in the pasta, and mix it all together.
Transfer to a deep baking dish, sprinkle the rest of the parmesan on top and pop in the oven for 30 mins at 200C/400F.
Serve.
Optional
In a frying pan on medium-high heat, cook your bacon lardons until nice and crispy. Add in your panko and mix through. Cook for another minute of two until the panko is golden.Add in some chopped parsley and serve sprinkle on top of the mac and cheese.