added a few test cases, need to write comments