First fully working version ie. satisfies original tests.
Removed notion of headLocation
Slight refactoring