implemented reverse events in model.
refactoring reverse events: make some events a subclass of RevertableEvent. Now switchting to desktop.