implement turn/proxy logics