some structure changes, made some methods abstract on provider, but lokk forward.