closed #36: navigation, refactored the whole thing