added documentation with doxygen