Naming:
A "module" is a .c file.

Functions starting with "vik_" operate on an object/structure with the module name (see layer.c for an example).
Functions starting with "a_" do not, these modules may have static variables.
Both are followed by the module name. Unless of course the function is static, in which case it may be called anything.

All (well, practically all) global constants and macros start with "VIK_" and then the module name.

----

Layers connect via what I call "interfaces" which are really just a structure of function pointers.
viklayer.c switches between the layers like polymorhpism.
