Refactored Navigation #59

Here's my initial proposal, see if this could be improved further.
I'm not sure where would be the right place for this. It's a logic so it does not really fit here