add extend funciton
resolve conflict