update struct, can custom events any where