Bring 1 gallon of water to a boil in a 6 quart pot - When water has come to a boil, add 2 Tbs of kosher salt to the water and stir in until dissolved - Add elbow macaroni and return to the boil - Give the macaroni a good stir and allow to cook for 1 minute less than manufacturer's recommended time - Drain and set aside
Melt butter over medium heat in a large saucepan - While continuously whisking, add flour a little at a time to make a roux - Continue to cook roux until golden in color (apx 5-7 minutes)
Add milk (along with optional ingredients if using) and cook until thick and bubbly (apx 5-7 min) – Remove from heat
In small portions, add ¾ of the total amount of the shredded cheese and stir until completely melted before adding the next portion - Repeat until fully incorporated
Preheat oven to 350°F -OR- Skip to 'On The Grill' instructions
In a large bowl, combine pasta and cheese mixture – Mix until all pasta is thoroughly coated
Transfer mixture into a greased casserole dish or Dutch oven, cover pasta mixture with the remaining cheese, (sprinkle on the bread crumbs if using) and bake uncovered for 30 minutes or until top is slightly browned and 'bubbly'
Remove from oven and allow to stand for 10 minutes
ON THE GRILL:
Make sure that your grill is set up for indirect (2 zone) cooking and preheated to 350-425ºF
Grease a 5 quart Dutch oven - Add the cooked pasta and cheese mixture and fold until all of the pasta is thoroughly coated
Cover pasta mixture with the remaining shredded cheese, (sprinkle on the bread crumbs if using)
Cover the Dutch oven and place on the 'cool' side of the grill (not over coals) and allow to cook with cooker covered for 25-40 minutes (amount of time depends on grill temp - 350ºF = 35-40 minutes while 425ºF = 20-25 minutes adjust as needed)
Remove Dutch oven lid and allow to cook with cooker covered for an additional 10-20 minutes or until it is slightly browned around the edges and top is slightly browned and 'bubbly'
Remove from grill and allow to rest for 10 minutes