In a large pot of boiling salted water cook the macaroni. Strain and set aside.
Heat up a separate pot on Med-Low melt the butter.
Whisk in the flour and mustard, keeping it moving for about 5 mins. Make sure it's free of lumps.
Stir in the milk, onion, bay leaf, and paprika. Simmer for 10 mins then remove the bay leaf.
Slowly whisk in the egg a little bit at a time. Stir in 3/4 of the shredded cheddar cheese, all of the cream cheese, and all of the velveeta cheese. Again make sure it's free of lumps! Season w/ salt and pepper.
If you're adding the diced ham: Put half the cooked macaroni in a 2-quart casserole dish, sprinkle half the ham over the top, cover w/ remaining macaroni then the rest of the ham. Pour the cheese mixture all over it (no need to mix them all up because the cheese will naturally coat everything evenly). Top w/ remaining shredded cheese, sprinkle bread crumps over the top. If you're also adding the cheeze its then go ahead and crush those and sprinkle over the bread crumbs or as a substitution to the bread crumbs :) If you're NOT adding the diced ham: Follow each step excluding the layering of the ham.
Bake uncovered for 30 mins. Let cool at least 5 mins before serving. Enjoy!