doxygen stuff, prefixed private functions with _ to exclude them from the doxygen docs