# Plugins

The singleton CongApp object owns a singleton CongPluginManager. This in turn owns a collection of CongPlugin objects, each of which represents a plugin. In turn, these each contain a collection of CongService objects which they register with the program. The various subclasses of CongService are the various kinds of functionality offered by plugins to the progam.

The plugins aren't actually compiled into separate dynamic libraries yet, but instead are all compiled into the main executable. Registration hooks are called manually within `cong-fake-plugin-hooks.c`. Our current plan is to move to a genuine plugin system by using the libgoffice library (when it is released).