         this.output_text = output_text;
     }
 
+    public function connect(clientID:String):void
+    {
+        s_r = new RTMFPSocket(circon, output_text);
+        s_r.addEventListener(Event.CONNECT, rtmfp_connect_event);
+        s_r.addEventListener(Event.CLOSE, rtmfp_close_event);
+        s_r.connect(clientID);
+    }
+
     public function listen():void
     {
         s_r = new RTMFPSocket(circon, output_text);

            rcp_pairs++;

            if(proxy_mode) {

            } else {
                /* Setup listening RTMFPConnectionPair. */
                if(rcp_pairs < MAXIMUM_RCP_PAIRS) {


            /* FIXME: Do I need to unregister the event listeners so
             * that the system can garbage collect the rcp object? */
            if(proxy_mode) {
                if(rcp_pairs < MAXIMUM_RCP_PAIRS) {
                    poll_for_id();
                }
            } else {
                if(rcp_pairs < MAXIMUM_RCP_PAIRS) {
                    puts("Setting up listening RTMFPConnectionPair");
                    var rcp:RTMFPConnectionPair = new RTMFPConnectionPair(circon, tor_addr, output_text);
                    rcp.addEventListener(Event.CONNECT, rcp_connect_event);
                    rcp.addEventListener(Event.CLOSE, rcp_close_event);
                    rcp.listen(); 
                }
            }
        }

        private function register_id(id:String, fac_addr:Object):void
