Make internal navigator logic generic