use the factory to create the instance