def modify_object(self, property_name, property_value_variant=None):
        """
        api visible method for modifying visible object properties

        :param property_name: property name
        :type property_name: string, list or dict
        :param property_value_variant: property value, must be `None` if property_name is of type `dict`
        :type property_value_variant: various or None
        :return: modified object
        :rtype: unicum.lfojbect.VisibleObject
        """
        if type(property_name) is dict:
            property_value_variant = property_name.values()
            property_name = property_name.keys()

        if isinstance(property_name, str):
            property_name, property_value_variant = [property_name], [property_value_variant]
        assert len(property_name) == len(property_value_variant)

        # convert names into visible
        property_name = self.__class__._to_visible(property_name)

        # loop over properties to set
        for n, v in zip(property_name, property_value_variant):
            self._modify_property(n.encode('ascii','ignore'), v)

        # rebuild object in order to maintain consistency
        self._rebuild_object()
        return self
api visible method for modifying visible object properties

        :param property_name: property name
        :type property_name: string, list or dict
        :param property_value_variant: property value, must be `None` if property_name is of type `dict`
        :type property_value_variant: various or None
        :return: modified object
        :rtype: unicum.lfojbect.VisibleObject