encap throttle into a seperate func