add initializer factory