using an std::map for materials