Also we should use std::map, std::vector over QMap, QList unless there is a good reason not to