Mince onions, garlic, and ginger (set aside).
Combine oil, cinnamon, cardamon, cloves, cumin, coriander seeds, bay leaves, peppercorns, and red chiles in a large skillet over a medium heat. Cook, stirring, until the cinnamon unfurls and the other ingredients are lightly brown (about 1-2 mins).
Add onion mix and salt; continue cooking until onions are lightly brown (about 15 mins). Keep a cup of water nearby until the onion cooks. As the pieces caramalize in the bottom of pan and add 1 tsp of water at a time. Scrape the bottom of the pan and stir. Do this until the onions are golden.
Add the ground coriander and cook, stirring for 1 minute. Add 3 tblspns of yogurt and cook while stirring until the yogurt is blended. Continue adding yogurt in this manner until you've used all the yogurt.
Add the chicken and cook while stirring (about 5 mins). Add hot water and stir. Bring to a boil then turn the heat down to low. Cover and simmer until the chicken is cooked through (additional 5 mins).
Stir in the garam masala and cook, stirring (2 mins). Stir in heavy cream and remove from the heat.
Let the dish rest for about an hour. When ready to serve heat overa low heat and drizzle with a little heat cream.