added protected initialization methods