improved base provider for generic providers