add new design pattern called memento