add private constructor