reimplement with @chrisdickenson's stuff
update graphlib
use graphlib-dot
shorter labels
improve example