In a sauce pan over medium heat, melt the Butter (6 tablespoon).
Add in All-Purpose Flour (1/4 cup) and stir continuously to avoid any clumps forming. Add in Whole Milk (1 1/2 cup), Cayenne Pepper (1/4 teaspoon), Garlic Powder (1 tablespoon) and bring to a light boil.
In a small bowl beat Egg (2) and slowly spoon in some of the béchamel and quickly beat the mixtures to avoid the eggs scrambling. Do this a few times until you have added around 3/4 cup of the sauce to the eggs.
With your heat set to medium, add in the egg mixture and continuously stir the sauce as it thickens up. Add Shredded Mozzarella Cheese (1/4 cup) and stir. Turn off the heat.
In a large baking tray layer the bottom with Russet Potato (1.75 pound). Season with Salt (to taste) and layer with Onion (2).
Pour half of the béchamel mixture over. Divide some Butter (4 tablespoon) into small knobs over the sauce and then layer with Shredded Mozzarella Cheese (2 cup).
Add another layer of Russet Potato (1.75 pound) and season again with Salt (to taste). Add more knobs of Butter (4 tablespoon) throughout the top, cover with Shredded Mozzarella Cheese (2 cup) and last spread the remaining béchamel sauce over the top.
Preheat your oven to 400 degrees F (200 degrees C).
Bake in your preheated oven for 1 hour and a half.
Remove from the oven and let it cool for 15 minutes before serving. Enjoy!