Cook the pasta according to directions. Be sure to season the water.
In a sauce pan heat oil over medium heat. Add 1/2 cup chopped onion. Cook until soft.
Peel and mince 4 garlic cloves. Add to onions and stir.
Add 2 TBS all purpose flour. Stir and allow to cook about a minute.
Slowly add 2 cups milk. Whisk to remove any flour clumps. Simmer until it begins to thicken. About 3 to 5 minutes.
Add 1 cup freshly grated cheddar cheese. Whisk until melted. Then add 2/3 cups freshly grated swiss cheese and 2/3 cups freshly grated mozzarella cheese.
If using fresh spinach, add to cheese mixture to cook down. If using frozen spinach, steam separately and squeeze out excess liquid.
Slice grape tomatoes in half and add to cheese mixture, along with cubbed ham and 1 tsp ground mustard.
Add salt and pepper to taste.
Add to 9x13 baking dish and top with Panko crumbs.
Bake covered with foil for 25-30 minutes.