Cook the chicken lightly in 4 tablespoons of oil until lightly browned and set aside.
Put the spinach in a deep pan, add 1/4 cup water. Bring to boil and remove from heat. Drain. When cool, grind in blender and set aside.
Heat the remaining oil and add ginger, garlic and onions until lightly brown. Add tomatoes, salt, cayenne, coriander powder, turmeric, cloves, and cardamom. Sprinkle with one tablespoon water. Cook for 10 minutes on low heat. Add chicken and milk. Simmer until the chicken is tender. Add spinach. Cook until spinach starts sticking to pan. Remove from heat. Add butter and cover until ready to serve.