made board an array, added backpointers to reconstruct path, cleanup