added more description with test cases