ready to add some func
fix conflict