A lot of algorithmic stuff and a half-completed travel() method