added Edge class and Graph interface