comments added, need more tests