Why having a graph manager which is also the graph object ? It would seem logical to have a graph manager which allows you to instantiate the graph component itself. So, you would have a method to get the component. Guppi: GuppiPlotWindow ---> an app window which inherits from GnomeApp. Allows you to print and do stuff. GuppiPlotTool ---> tools to use in the GuppiPlotWindow. GuppiPlotToolHelp ---> stuff for Tools. GuppiPlotToolkit ---> toolbar for tools which can be used on a given graph type. It is basically a list of GuppiPlotTools. GuppiPLotPlugin ---> base class for all types of plugins. GuppiElementState ---> Model of Element. Can return a GuppiElementView. GuppiElementView ---> Controler of Element. Can return a GuppiCanvasItem. has an associated GuppiGeometry ,GuppiAxisMarkers, GuppiViewIntervals and GuppiStyle. GuppiCanvasItem/GuppiCanvasGroup ---> View of Element. It is basically a CanvasItem which draws itself in "guppi_render" instead of using "render" after having chained to its container group canvas item. GuppiShared/GuppiSharedHash ---> A GuppiShared looks like a way to put hold an arbitrary object and to monitor its data changes. Why is it better than monitoring the actual object's data changes ? GuppiGroupState --> not written yet. Should be used by GuppiGroupView as its Model. GuppiGroupView --> layouts its GuppiElementViews with a GuppiLayout. The GuppiLayout modifies the GuppiGeometries of each GuppiElementView. The GuppiCanvasItems which were generated by GuppiElementView still hold a pointer to the GuppiElementView so they use it in their guppi_render function to render themselves. RootGroupState/RootGroupView/RootGroupItem/CanvasGroup ---> They do stuff. GuppiLayout --> calculates a given Layout using the Geometries. Rules are runs of Terms. Each Term represents a Geometry. Layout adds Rules and calculates layout using guppi_layout_calc. GuppiLayout is used by the GuppiGroupView to layout its GuppiElementView objects. GuppiGeometry --> contains basic geometrical information to represent a layout constraint. Each GuppiElementView has a GuppiGeometry object associated to it. Everytime a GuppiGeometry changes, the GuppiLayout recalcs its layout through a call to guppi_layout_calc_delayed which is connected to the changed_size signal in guppi_geometry_connect_to_layout. GuppiChartType ---> register new chart types. GuppiAxisMarkers RasterText is the view of the TextBlock model. It should be replaced by an implementation using pango. GuppiRasterText ---> renders antialised text from GuppiTextBlock using gnome-print's type1 renderer. GuppiTextBlock ---> does the layout of text tokens (GuppiTextToken) based on font and stuff. GuppiTextToken ---> text tokens. (word, space)... GuppiGSML ---> similar to Pango's markup langage: allows you to embed style informatiopn within the text to be rendered using xml tags. GuppiStyle ---> contains colors, widths, Markers and a way to get a widget to edit them. GuppiMarker ---> the way plots are represented on screen. Contains draw rountines too. export the functionality of all the above objects to scheme and python. guppi-scm-plot.{h|c} guppi-python-plot.{h|c} GuppiSeqStyle ---> a variable sized array of Styles.