accept any number of cols