Add chicken to a bowl. Sprinkle the black pepper powder and little salt over it. Mix well to coat the chicken. Let stand while you start making the masala.
In a small bowl, beat together the yogurt, cumin and kasuri methi. Keep near.
Add oil to a heavy wide kadai or pan. Warm up the oil till its slightly smoky. Add cardamom, methi dana & bay leaf and sauté for 10 seconds. You will see that the cardamom swells up.
Add the ginger garlic paste and green chillies. Sauté for 10 seconds till you smell a nice aroma.
Add the onions next and brown them till light golden in color on medium heat. Takes about 3-4 minutes.
Once the onions are browned, add 2 tbsp water to the kadai, they will splutter a bit. Immediately add the chicken. Sprinkle the turmeric and coriander. Toss around the chicken for 3-4 minutes with onions till you see that the chicken is starting to turn white. Don't brown or cook too much.
Next add the crushed tomatoes. Fry the tomatoes with chicken for 3-5 minutes on medium heat till you start seeing tiny oil bubbles. If you are using bone in chicken, cover the kadai and let the chicken cooks in its own and juices from tomatoes.
When the chicken is tender, reduce the heat to low and add the beaten yogurt, Immediately mix continuouslyfor 2-3 minutes once you add yogurt to avoid curdling.
Let the chicken cook for another 4-5 minutes with the yogurt. You will see a thick gravy will form. Let the chicken cook completely in yogurt. You will see that the oil will start releasing.
Add the chopped methi leaves along with garam masala. Mix well and cook everything till the methi has completely wilted. About 3 minutes.
Add the heavy cream (if using), mix and turn off the stove after 1 minute. Let rest for a couple hours if possible. Reheat and serve warm.