uplink abstract and default impl