Adding in an AStar implementation (untested!!)