unstable, but work for concat char