add `set` event
implement history cleanup