Heat the oil in a large heavy pan then add the chopped onion and stir for a few minutes with the heat on high.
Add the cassia bark and cardamoms stir a little then turn the heat down to low and cook for 10 minutes.
Add the ginger and garlic stir and cook for another 10 minutes on low heat stirring now and then.
Add the turmeric, coriander and chilli powder and fry gently for a minute
Add 1 tablespoon of yoghurt stir round and turn the heat up so the yoghurt sizzles in the oil.
When the yoghurt has lost a lot of its moisture then you can add another tablespoon.
Stir and fry as before.
Repeat until all the yoghurt is incorporated.
Add the tomato purée and stir in.
Stir in plenty of hot water enough to make the mixture very fluid.
Bring to the boil and simmer stirring occasionally for 20 minutes.
Add salt to taste.
While the sauce is cooking heat a frying pan at low to moderate then add the flaked almonds.
Move the almonds around the pan so they don't burn and heat until they have just taken on a brown colour.
Remove from pan and set aside to cool.
When cool crush.
Heat a little oil in a large heavy frying pan and stir-fry the tofu pieces over a moderate heat until they are sealed.
Add the tofu and almonds to the sauce and simmer gently for another 10-15 minutes or until the tofu is cooked.
Stir from time to time. If the sauce gets too dry add a little hot water.
Serve garnished with chopped fresh coriander leaf.