major refractor of the followRoute method. This definitely needs to be tested