more save()/restore() reducing