add a new way of construct vec