rewrite so do not need to recompute initialization