In the mixer bowl add half of the sugar, the dry yeast, orange zest and warm milk. Mix by hand with a whisk and set aside for 10 minutes so that the yeast will be activated.
In a food processor add the other half of the sugar, the mahleb and mastiha and process until all combined. If you are not using ground mahleb and mastiha crush them first with a mortar and pestle.
In a separate bowl mix the flour with the sugar/spices mixture and add to the yeast mixture. Mix with the hook for a couple of minutes on medium to high.
Add the eggs and continue mixing with the hook, lower the speed and add the salt and butter pieces. Increase the speed and knead for 10-15 minutes or until dough is stretchy and stringy. It will be soft and unstick from the bowl. Do not add additional flour. Add some olive oil to your fingers if dough is sticking a bit to your hands.
In a lightly greased bowl, place the dough and cover with plastic wrap. Let it sit in a warm place for 1 ½ hour.
Remove the dough from the bowl and separate it in 4 equal pieces (weigh them if necessary). Add some olive oil to your fingers if dough is sticking a bit to your hands. Roll out each piece in a cord about 13 inches long, fold in half to twist into a large braid. Place on the prepared baking sheet. Do this with the rest of the pieces.
Cover the pan with plastic wrap and place the pan in a warm place for about 2 hours.
Preheat oven at 340 F (170 C)
In a small bowl, mix 1 egg, 1 tsp sugar and 2 tablespoons water. Brush the mixture over each tsoureki. Sprinkle with slivered almonds or sesame seeds.
Bake for about 20 -30 minutes until the tsoureki is golden-brown.
Remove from oven, let it sit for 10 minutes. Serve warm or at room temperature.