add some tooltips and code documentation