updated type and providers, still completely untested