Some definitions was moved, and be refactored.