Added Graph implementation - the one ported from my book examples, still requires a rewrite