Repeat until all ingredients are used up. Transfer the macaroni and cheese mixture to a 3-quart or 9 x 13 baking dish and scatter bread crumbs, if using, evenly over the top. Put in a layer of macaroni, sprinkle with cheese, dot with butter, salt, and pepper.Season with salt and pepper and, using your hands, mix well to ensure the bread crumbs are evenly coated. Make the optional topping: Combine bread crumbs, melted butter and Parmesan, if using, in a medium bowl.Repeat until all ingredients are used up, ending with layer of cheese. Put in a layer of macaroni, sprinkle with cheese, dot with butter, salt, and pepper. Grease (with butter) bottom and sides of a 2-quart casserole dish. Bring to a boil, stirring constantly cook and stir until thickened. Stir in flour and seasonings until blended gradually stir in milk.
In a Dutch oven, heat 1/3 cup butter over medium heat saute onion until tender. Line a rimmed baking sheet with aluminum foil (to catch any cheesy drips). Cook the macaroni according to package directions, drain, and rinse with cold water. Cook macaroni according to package directions for al dente drain. When butter has melted whisk in flour and cook about 30 seconds, whisking continuously. (The sauce will seem thick at first and thin out as the cheese melts it will thicken while it bakes.) Season with salt and pepper and add cooked pasta, stirring to coat well. In a medium saucepan, over medium heat, melt butter.
Cook pasta in a large pot of salted boiling water until it’s barely al dente.