move initialization into private constructor