final, and private constructor