This falls into the creamy camp, with a classic bechamel base. From "Ten: All the Foods We Love," by Sheila Lukins (Workman, 2008).
1 tablespoon olive oil
16 ounces elbow macaroni, uncooked
6 tablespoons unsalted butter
6 tablespoons all-purpose flour
4 cups whole milk (see note)
1 1/2 cups (6 ounces) grated Gruyere
1 1/2 cups (6 ounces) grated sharp cheddar
1 1/2 cups (6 ounces) grated mozzarella
2 dashes Tabasco
Salt and freshly ground pepper to taste
Sweet paprika, to taste
Bring a large pot of salted water to boil. Add oil, then macaroni and stir. Cook until just tender, about 9 minutes. Drain and return to pot.
Preheat oven to 400 degrees. Butter a 13-by-9-inch baking dish and set aside. Place the milk in a saucepan and place over medium-low heat until warmed through. Stir the three cheeses together in a mixing bowl. Remove 3/4 cup and set aside.
Melt the 6 tablespoons butter in a heavy saucepan over low heat. Sprinkle in the flour and whisk to combine. Cook, whisking, for 3 minutes. (Don't brown.) Slowly whisk in warm milk. Increase heat to medium and cook, whisking, until smooth and thickened, about 5 to 6 minutes.
Remove from heat. Stir in mixed cheeses by small handfuls, whisking until each addition has melted completely before adding more. Return to low heat if necessary. Season with Tabasco, salt, pepper and paprika.
Stir the reserved pasta, breaking up clumps, then stir in the cheese sauce, folding with noodles until well-coated.
Spread in prepared baking dish and sprinkle the reserve 3/4 cup cheese evenly over the top. Bake about 25 minutes, until the top is golden and crusty
Note: Although the recipe specified whole milk, we used nonfat for testing, and it worked fine. If nonfat is what you have on hand and you want to make it a little richer, substitute half-and-half for 1 cup of the milk.