use ExtensionFactory