use Vec instead of ~[]