Heat a large non-stick frying pan on medium and add half the butter.
Add chicken and onion and brown for a couple of minutes.
Remove mixture from the pan and set aside.
Reduce heat to low and add remaining butter as well as the garlic, ginger, cumin, garam marsala, cardamom and coriander.
Cook for 1-2 minutes before returning chicken to the pan, along with the tomatoes and chicken stock.
Increase the heat and bring to the boil.
Reduce heat and simmer for 10 minutes before adding yoghurt and cream.
Heat through and serve on rice garnished with coriander leaves.