add type provider feature