add test cases (some still fails)