add more tests and re-organize tests