add test cases, somewhat off