implement navigator, write testcases