For a number of reasons, we are interested in the ability of the edges and nodes of a graph being able to hold arbitrary types of data. We already use a char * name field in all the nodes and a double edge cost value in all the edges. It would be very useful to be able to add data which is a pointer of an arbitrary structure, function and so on easily. Templatized methods are one possible solution, but we wish to explore the use of void * data to achieve this arbitrariness. This material is based on discussions in Wang's book on Object Oriented Design (Wang, 31) and extends his model by introducing the use of another access function of type entry which enables us to cast the arbitrary data to the needed type and then allocate the amount of memory we need.