some refact
some remove conflict