Refactored Navigation #59

Here's my initial proposal, see if this could be improved further.
I think, that in case when option is missing - we must throw an exception to notify the developer about not correct behaviour.