def names
      names = @from ? @from.names.dup : []
      dirty_entries.each do |k,v|
        if v
          unless names.include? k
            names << k
          end
        else
          names.delete(k)
        end
      end
      return names
    end
def names
      names = @from ? @from.names.dup : []
      dirty_entries.each do |k,v|
        if v
          unless names.include? k
            names << k
          end
        else
          names.delete(k)
        end
      end
      return names
    end
TODO: cache