use toVector instead of directly creating Impl