doc: added extensive documentation