Abstract
We present an object oriented design for graph libraries that implements a dynamic typing of graphs. With this design, we can specify pre and post-conditions on graph algorithms, describe safe polymorphic algorithms on graphs and specify operations specific to types of graphs, while presenting performance and allowing extensibility.