Preheat your oven to 350f (180c).
Make the cheese sauce in a large oven-proof skillet (I used a 32cm Le Creuset shallow casserole), or make it in a saucepan and mix everything together before transferring to a casserole dish to bake.
Heat the butter over a medium heat and when sizzling, add the flour.
Whisk or mix vigorously for a minute to cook the flour off.
Lower the heat and add half of the milk in a slow stream, whisking the whole time and making sure you are getting all the flour mixture from the bottom and sides of the pan.
Once all the flour mixture is incorporated add the rest of the milk and whisk really well. I often add the milk a cup at a time.
Cook for 4-5 minutes, stirring until it thickens and coats the back of a wooden spoon. It should never be boiling.
Remove from the heat and add the cheese in three separate lots, whisking and letting it mostly melt before adding the next lot.
Add the cooked pasta, bacon, and half of the onions. Mix through gently.
Check for seasoning, I added 1.5 teaspoons of black pepper and 1 teaspoon of salt. It will depend which cheeses you used.
Pour into your baking dish and top with the remaining onions, then sprinkle the panko crumbs in an even layer over the top.
Bake in the oven for 25 minutes until bubbling and golden.
Let it sit for 5 minutes before serving.