Cook the pasta 2minutes under 'al dente'. The remaining cooking will be finished in the oven.
Carmelising Onion and Garlic
Finely grate or finely chop the onions and garlic and with a little olive oil, caramelise it under medium low heat until it forms a paste.
Making the bechamel
In an appropriate size saucepan (with extra space for the pasta later to be added in) - melt the butter with a medium low heat.
Add in the flour after this, and cook it for about 1-2 minutes to form a paste known as a roux.
Add in your milk incrementally while whisking and gently form a thick sauce aka. bechamel.
Throw in the flavourings now: mustard, nutmeg, carmelised onions and garlic and a very generous season with salt and pepper.
Give it a taste now, and make sure the sauce is almost overpowering, now melt it in about 50% of all your cheeses in a nice gooey cheesy sauce.
Completing the dish
Chuck in your pasta and mix well, ensuring that all the pasta is covered with sauce. Take it out of the pan and put in a size appropriate baking pan.
Level it out in your bake pan and add the remaining cheese on the top. Bake at 190deg C for approximate 10-15minutes, or until the cheese on top turns nice and brown.
There's really no need to garlish, but if you must, you could do with a little fresh herb scattered, or some seasoning / spices.
Pasta - Make to cook the pasta in with (100gm to 1lt water ratio) plenty of water. Make sure its well salted - no oil required.
Roux - Make sure to cook out the roux; unless you want the entire dish tasting like raw flour. How to test you say? Just take a little bit out of the pan and taste it (blow on it first - it might be lava hot)
Caramelising Onions and Garlic - Slowly do it. Don't overheat the mixture, this will certainly burn the garlic which contains a lot of natural sugars.
Seasoning & Other ingredients - Venture out and add different types of spices or herb combinations. Crushed fennel seeds with oregano or cumin and smoked paprika with coriander.
Other ingredients like - bacon chips, sausage ragu, roasted zucchinis or beets can be incorporated - though certainly no longer traditional!
Overseasoning - One big thing to note that your bechamel (before you add in the cheese) should heavily seasoned. This is simply because pasta does not have alot of flavour. Therefore your sauce should taste really strong for the dish to work. But if you're putting in other strong flavours like bacon; you should tame your bechamel