Cover elbow macaroni with water and cook according to package instructions. Preheat oven to 350°.
While macaroni is cooking, melt butter in a large saucepan over medium heat. Once butter is melted, whisk in the flour. Cook for a few minutes until is is incorporated together and starting to bubble.
Pour in milk and whisk often to incorporate the roux (butter and flour) as the milk cooks. Let this cook for 4-5 minutes until it starts to thicken and bubble.
Pour in 1½ cups of the grated cheese (if you shredded and combined your own cheeses, leave a ½ cup out), and stir until cheese is melted and combined with the roux mixture.
Once the macaroni is cooked, drain any excess water, and combine with the cheese mixture. Pour in a greased 9x13 baking dish, or keep in oven safe skillet. Sprinkle remaining shredded cheese on top, and top with a few shakes of paprika for color.
Bake for 20-25 minutes at 350° until top and edges are golden.