implement RootFactory