save/load pattern, change update to support that