Preheat the oven to 350 and lightly grease a 3 quart baking dish.
Cook the pasta to al dente per package directions. Drain then set aside.
Meanwhile, make the sauce. Melt the butter in a large pot over medium heat. Cook garlic for about 1 minute. Whisk in flour and cook another minute. Whisk in milk, then let cook and thicken another 5 minutes. Whisk regularly to make sure nothing sticks to the bottom.
Add cayenne, mustard, tomatoes, ham, Parmesan, and all but 1/2 cup of the cheddar then stir until the cheese has melted.
Remove from heat, then stir cooked pasta into the sauce.
In a separate bowl, stir together melted butter and breadcrumbs. Transfer the pasta to the prepared baking dish, top with the breadcrumb mix, remaining cheese, and bake for 30 minutes.
Serve warm, topped with extra Parmesan, and enjoy!