Complete test-covered OO version of graph from spike