In a large pot over medium low heat add the butter, the sugar and the milk. Cook for a few minutes, until the butter is melted. Add the zests, remove from heat and let the mixture cool slightly. Add the orange juice.In a glass measuring cup, mix the warm water, the sugar and the yeast. Allow it to sit for 5 minutes, until it bubbles and the yeast is activated.Beat the three eggs and add them to the reserved butter/milk mixture.Sift the flour, mahlepi (and mastic if using) and place in the bowl of a stand mixer. To the dry ingredients, add the reserved butter/milk mixture and the yeast mixture. Mix to form a soft and pliable dough, adjusting the flour as necessary. Rub the surface with the oil and cover with plastic wrap. Let it rise for two hours.Punch the dough down and divide it into four equal portions. Divide each portion into three balls. Cover the rest and work with three balls at a time: Roll each ball into a 10â€-12†long log. Pinch the top ends of the logs together and then braid the logs. When you get to the end, pinch the bottom ends together. Tuck the top and bottom ends underneath the dough. Place braided loaf on a parchment lined baking sheet. Repeat steps with the remaining dough. Let the bread rise at room temperature for an hour.Pre-heat oven to 350° F. In a small bowl, whisk together remaining egg and milk. Brush the tops of the loaves with the egg/milk mixture and sprinkle with sesame seeds or sliced almonds. Bake (in batches) for 20-25 minutes. Allow the bread to cool completely before serving.