i: use classmethod register_XXX