         
         private var proxy_pairs:Array;
 
+        private var debug_mode:Boolean;
         private var proxy_mode:Boolean;
 
         /* TextField for debug output. */
         private var output_text:TextField;
+        
+        /* Badge for display */
+        private var badge:InternetFreedomBadge;
 
         private var fac_addr:Object;
         private var relay_addr:Object;
 
         public function rtmfpcat()
         {
+            proxy_mode = false;
+            debug_mode = false;
+            
             // Absolute positioning.
             stage.scaleMode = StageScaleMode.NO_SCALE;
             stage.align = StageAlign.TOP_LEFT;
-
-            output_text = new TextField();
-            output_text.width = stage.stageWidth;
-            output_text.height = stage.stageHeight;
-            output_text.background = true;
-            output_text.backgroundColor = 0x001f0f;
-            output_text.textColor = 0x44cc44;
-            addChild(output_text);
-            
-            puts("Starting.");
+            
             // Wait until the query string parameters are loaded.
             this.loaderInfo.addEventListener(Event.COMPLETE, loaderinfo_complete);
         }
         
         public function puts(s:String):void
         {
-            output_text.appendText(s + "\n");
-            output_text.scrollV = output_text.maxScrollV;
+            if (output_text != null) {
+                output_text.appendText(s + "\n");
+                output_text.scrollV = output_text.maxScrollV;
+            }
         }
 
         private function loaderinfo_complete(e:Event):void
         {
             var fac_spec:String;
             var relay_spec:String;
-            
-            puts("Parameters loaded.");
-
+
+            debug_mode = (this.loaderInfo.parameters["debug"] != null)
             proxy_mode = (this.loaderInfo.parameters["proxy"] != null);
+            if (proxy_mode && !debug_mode) {
+                badge = new InternetFreedomBadge(this);
+                badge.display();
+            } else {
+                output_text = new TextField();
+                output_text.width = stage.stageWidth;
+                output_text.height = stage.stageHeight;
+                output_text.background = true;
+                output_text.backgroundColor = 0x001f0f;
+                output_text.textColor = 0x44cc44;
+                addChild(output_text);
+            }
+            
+            puts("Starting: parameters loaded.");
+            
+            /* TODO: use this to have multiple proxies going at once */
             proxy_pairs = new Array();
 
             fac_spec = this.loaderInfo.parameters["facilitator"];

        }
    }
}

            p_p.addEventListener(Event.CLOSE, function (e:Event):void {
                puts("ProxyPair: connection closed.");
                p_p = null;
                if (proxy_mode && !debug_mode && badge != null) {
                    badge.num_proxy_pairs++;
                }
                establish_facilitator_connection();
            });
            p_p.listen(s_c.local_stream_name);
