remove React.ComponentElement<P> and rename Factory<P> to ComponentFactory<P>