introduce concept of private constructor