protected constructor instead of private