Boil the pasta with some salt and strain.
Heat a saucepan on low and add two tablespoons of olive oil. Fry the onion and garlic. Stir occasionally until the onions have softened - for about 5 minutes or so.
Increase the heat to medium, add the ground beef and cook. Stir and break up the meat with a spoon for about 10 minutes, or until browned.
Add the tomato paste, allspice, bay leaf, oregano, cinnamon stick, and sugar. Then season with salt and pepper.
Reduce the heat and simmer for 15-20 minutes, or until all the liquid has been evaporated. Remove from the heat and allow it to cool.
Meanwhile, for the sauce, melt the butter in a large, heavy skillet over medium heat. Stir in the flour and cook, stirring frequently for 1 minute.
Remove the pan from the heat and gradually pour in the milk, whisking constantly until the mixture is smooth.
Return the sauce to medium heat and simmer, whisking constantly for 5 minutes until thickened and smooth. Remove from the heat and whisk in the nutmeg, salt, and pepper.
Preheat the oven to 180 degrees Celcius.
Grease a baking dish with butter and cover the base of the dish with half of the pasta.
Spread the meat mixture on top and cover with the rest of the pasta.
Spread over the béchamel sauce and top with the kefalotiri or pecorino.
Bake for about 40 minutes, or until the top is golden brown.
Remove from the oven and let it stand for 15 minutes before serving.