add some test
merge with lch