refactor, add ExtraTypeProvider