use std::map to represent object