implement some hub protocol