Make with 3 different cheeses as below, or use all-cheddar or cheddar/parmesan, if that's all you have. You can use salted butter, it will just be a little saltier than if you didn't.
100 g unsalted butter, plus a little more for buttering the dish.
3 tbsp flour
750 ml whole milk, hot
350g grated cheddar cheese
150 g grated Gruyere cheese
100g grated Parmesan cheese
600g macaroni
1/4 tsp cayenne pepper
Topping:
40 g unsalted butter
100g white breadcrumbs
150g grated cheddar
50g grated Parmesan
Preheat oven to 400 degrees F.
Butter a large ovenproof dish, about 28 cm x 28 cm x 7 cm.
Make the cheese sauce:
Melt butter in a heavy-bottomed pan over medium-low heat.
Stir in flour with a whisk, cook about 3 min.
Whisk in hot milk.
Let boil, whisking constantly, then simmer, whisking, 3 minutes.
Add cheeses and cayenne, season and stir, till smooth. Take off heat.
Cook pasta to package directions, but for 2 minutes less.
Drain, return to pan, stir in sauce till coated. Spoon into the buttered dish.
Make the topping:
Melt the butter.
Stir the butter in a bowl with breadcrumbs, cheddar, parmesan, till combined.
Sprinkle topping over pasta and bake till golden brown, 20-25 min.
Cool 10 min. before serving.