Rework #save() method to update or create as required