Using Data.Map from containers
core functionality is done