always use JSON::XS wrapper to handle version objects correctly