moved to webcomponents.js to better support extending