rework on OTG function