def via_hop(*args)
      args = args.flatten.compact 
      if args.first.nil?
        return @rye_via
      elsif args.first.is_a?(Rye::Hop)
        @rye_via = args.first
      elsif args.first.is_a?(String)
        hop = args.shift
        if args.first.is_a?(Hash)
          @rye_via = Rye::Hop.new(hop, args.first.merge(
                                        :debug => @rye_debug,
                                        :info => @rye_info,
                                        :error => @rye_error)
                                 )
        else
          @rye_via = Rye::Hop.new(hop)
        end
      end
      disconnect
      self
    end
def via_hop(*args)
      args = args.flatten.compact 
      if args.first.nil?
        return @rye_via
      elsif args.first.is_a?(Rye::Hop)
        @rye_via = args.first
      elsif args.first.is_a?(String)
        hop = args.shift
        if args.first.is_a?(Hash)
          @rye_via = Rye::Hop.new(hop, args.first.merge(
                                        :debug => @rye_debug,
                                        :info => @rye_info,
                                        :error => @rye_error)
                                 )
        else
          @rye_via = Rye::Hop.new(hop)
        end
      end
      disconnect
      self
    end
* +hops+ Rye::Hop objects will be added directly
 to the set. Hostnames will be used to create new instances of Rye::Hop
 h1 = Rye::Hop.new "host1"
 h1.via_hop "host2", :user => "service_user"

 OR

 h1 = Rye::Hop.new "host1"
 h2 = Rye::Hop.new "host2"
 h1.via_hop h2