dynamically generate navigation via API