use CC_CONSTRUCTOR_ACCESS to replace protected/private