Quantum anomalous hall effect