added documentation (not finished)