Added documentation using Doxygen