type providers

/cc @eed3si9n