updated provider interface
implemented base provider
updated baseprovider usage and tests
implemented random array based on weight
added test for randomweightedarray
added test for null