added loads of doxygen documentation