Add ctors and refactor Graph, rename vars in Edge