added proper documentation