revise hi Function a bit