Move some SOA saving logic back into SOA.save