separate computation from DOM update
do not pay the jQuery tax