refactory + notify