Bug 1100295 - Implement navigation logic. r=crdlc

I've tried but it's more tricky than the first approach, so keeping the old approach.