merge with shulin