add versioned init factory