add more test and improve old tests