improved Factory::createFromServer