improve performance change reflect to interface