Only update info on demand for performance

This means anything which alters any stat reflected in the UI needs to
call obj.updateInfo() after changing the stat.