make Grapher an abstract interface