Heat oven to 350 degrees and grease baking dish.
Cook elbow macaroni to al dente following directions on package. Drain when cooked.
Combine beaten eggs, milk, salt, and black pepper, and set aside.
Place one-half of the macaroni on the bottom of the baking dish.
Top with half the butter, half the cubed cheese and half the shredded cheese.
Gently pour in half of the milk, half of the heavy cream, and the beaten eggs.
Repeat the above layering the macaroni, butter, and cheeses and add what's left of the milk, cream, and beaten eggs.
Place in preheated oven and bake for 40 to 50 minutes.
Remove from oven and let sit about 10 to 15 minutes before cutting into generous cubes or spoon out and serve.