more work on the map trait