Reorganize, add more test cases