Separated the free_navigation constructor into multiple methods.