Add documentation
Make sure only subclasses of base provider can be added, and only once