Cell Differentiation

I know that cell differentiation occurs when the cell becomes a specialised cell of a tissue and different genes are switched on and off depends on the types of specialised cell.

The causes I am aware of are:
When repairment of tissue is needed (tissue damage etc)
When other cells nearby stimulates cell differentiation by secreting chemicals
Physical contact with other cells
Physical contact with certain molecules in the microenvironment

Does anyone know some kind of mechanisms that control cell differentiaton? Or any other causes of stem cells becoming specialised cells? Thanks.