updated to use webcomponentsjs