add memento pattern