refine some return type