QueryAsyncFactory, factory pattern is added