Rewrote graphstruct.go into a much cleaner graph.go