implemented registerFactory()