rewrote save semantics