implemented "shadechange" event