documentation of internals