pls no std::vector in interfaces, we have our own structures for that