navigation algorithm