Heat Oil in a deep pan, then add whole spices. Fry them until you get an aroma, just for a minute, then add chopped onions and green chili if desired. Sauté until onions are deep golden in color.
Add ginger and garlic and sauté until you get a nice aroma, about one minute.
Add tomatoes, turmeric and salt, Mix well and cook until the tomatoes turn soft and mushy.
Add yogurt, red chili powder, cayenne pepper, garam masala and coriander powder. Cook on low heat, until the mixture smells good and the raw smell goes away.
Add chicken and coriander/mint leaves. Fry until the chicken turns white or pale in color, about 3 mins. Cover and cook on low heat 3-4 minutes, so the chicken can absorb the spice flavors.
Pour in enough hot water just to make a thick curry. Do not add too much water, only use as needed.
Cover and cook on medium to low heat until the chicken is cooked and the curry has turned thick about 25 mins. Serve with rice, or naan