better syntax and add more test cases