add save/restore, reorg