nothing but udp
split loop to functions