moved some classes around, and a new path data structure