extend with the slot API and use the DOM types