use native js map instead