More extra credit, still need to implement graph