+CACAO is partitioned into modules which are usually a .c file or a complete
+subdirectory. The modules are bound together by the main module (main.c) which
+parses the command line options, calls the system class loader (loader.c) and invokes
+the main method of the java class file. The first time a method is invoked
+the just-in-time compiler (jit) generates machine code for the selected host architecture.
+During the execution it is possible that native function are called. All native
+functions have to be linked with all other modules. Therefore, tables
+and headers have to be generated by the header file generator (headers.c) before
+the rest of the CACAO system is build. The Boehm-Weiser garbage collector is
+used for memory management. Figure \ref{cacao_overview} gives an overview of
+CACAO.
+
+