Improve ShardMap() and add CanAutoShard()