use std::vector rather than not-standard template