def _new(self, dx_hash, close=False, **kwargs):
        """
        :param dx_hash: Standard hash populated in :func:`dxpy.bindings.DXDataObject.new()` containing attributes common to all data object classes.
        :type dx_hash: dict
        :param init_from: Record from which to initialize the metadata
        :type init_from: :class:`DXRecord`
        :param close: Whether or not to close the record immediately after creating it
        :type close: boolean

        Create a new remote record object.

        """

        if "init_from" in kwargs:
            if kwargs["init_from"] is not None:
                if not isinstance(kwargs["init_from"], DXRecord):
                    raise DXError("Expected instance of DXRecord to init_from")
                dx_hash["initializeFrom"] = \
                    {"id": kwargs["init_from"].get_id(),
                     "project": kwargs["init_from"].get_proj_id()}
            del kwargs["init_from"]

        if close:
            dx_hash["close"] = True

        resp = dxpy.api.record_new(dx_hash, **kwargs)
        self.set_ids(resp["id"], dx_hash["project"])