fix + add test cases