Доделана модель событий.
выполнена переработка кода!