We could use FinishEventObserver object lifecycle to Attach/Detach observer automatically. I mean, put AttachObserver under the constructor function, put DetachObserver under the destructor function. Seems I forget the destructor here. WDYT?