implement UndoList (not finished); update mapdb