def get_unit_property_names(self, unit_id=None):
        '''Get a list of property names for a given unit, or for all units if unit_id is None
        Parameters
        ----------
        unit_id: int
            The unit id for which the property names will be returned
            If None (default), will return property names for all units
        Returns
        ----------
        property_names
            The list of property names from the specified unit(s)
        '''
        if unit_id is None:
            property_names = []
            for unit_id in self.get_unit_ids():
                curr_property_names = self.get_unit_property_names(unit_id)
                for curr_property_name in curr_property_names:
                    property_names.append(curr_property_name)
            property_names = sorted(list(set(property_names)))
            return property_names
        if isinstance(unit_id, (int, np.integer)):
            if unit_id in self.get_unit_ids():
                if unit_id not in self._unit_properties:
                    self._unit_properties[unit_id] = {}
                property_names = sorted(self._unit_properties[unit_id].keys())
                return property_names
            else:
                raise ValueError(str(unit_id) + " is not a valid unit_id")
        else:
            raise ValueError(str(unit_id) + " must be an int")