use static to protect private members