Added more tests, all functionality tested, some exception cases still need testing