Cook the macaroni noodles in a large pot of salted water according to package directions, draining them a minute before the "al dente" cooking time.
Heat the milk and half and half in the microwave or on the stove top until very hot but not boiling.
In a heavy bottomed sauce pot, melt the butter over medium heat. Whisk in the flour and continue to cook, whisking constantly, until the mixture turns a light brown color, about 3-4 minutes. Reduce the heat to low.
Slowly start pouring in the milk and half and half, whisking constantly. The mixture will look very thick and lumpy at first and will thin out as you whisk in the remainder of the milk.
Increase the heat back to medium and cook the mixture, whisking continuously, another 2-3 minutes or until thickened. The sauce should coat the back of the spoon. If you put a little bit on a spoon and run your finger through it, the line from your finger should remain.
Reduce the heat to low and stir in the salt, garlic powder, ground mustard and cayenne (if desired). Season to taste with salt and pepper.
Add the cheeses, stirring to melt. If you're unable to melt in all the cheese, add a bit more milk, a Tablespoon at a time, until the cheese is melted completely. Stir the sauce into the pasta, reserving some cooked pasta. If the mac and cheese seems too saucy, add the remaining pasta. Otherwise, serve immediately!