some refractoring
conflict