heat 2 T butter and fry the onion till golden; add the meat and sauté stirring and turning the pieces till browned all over. Cover with water, add salt and pepper, cinnamon and allspice and simmer for 1 hour; or till meat is tender and most of water absorbed.
boil the lentils in water for about 20 minutes till done, adding salt when they begin to soften, drain.
now boil the rice in a pan for 10 minutes till not quite tender and still a little underdone. Drain the rice.
Melt 2 T butter in bottom of pan, then stir in 2 T of the saffron water and about a third of the rice.
spread half the meat on top, then sprinkle on half the lentils, raisins, dates and almonds if using.
Cover with a layer of rice and remaining meat, lentils, raisins and dates and finish with the rice that is left.
Melt the remaining butter, stir in the remaining saffron water and pour all over. Cook covered on very low heat for 20-30 minutes.