             return color;
         }
         
+        private function _defineUserAgent():void
+        {
+            _userAgent = core.strings.userAgent( appName + "/" + appVersion.toString(4) );
+        }
+        
         /**
          * Defines a custom user agent.
          * <p>For case where the user would want to define its own application name and version 
          * it is possible to change appName and appVersion which are in sync with 
          * applicationProduct and applicationVersion properties.</p>
          */
-        public function get userAgent():UserAgent
-        {
-            /* note:
-               if we change appName then we update applicationProduct
-               if we change appVersion then we update applicationVersion
-               but the inverse is not true.
-            */
+        public function get userAgent():String
+        {
             if( !_userAgent )
             {
-                 _userAgent = new UserAgent(this, appName, appVersion.toString(4));
+                 _defineUserAgent();
             }
             
             return _userAgent;

        public function set appVersion( value:Version ):void
        {
            _appVersion = value;
            userAgent.applicationVersion = value.toString(4);
        }
        
        /**

        private var _protocol:Protocols;
        private var _appName:String;
        private var _appVersion:Version;
        private var _userAgent:String;
        private var _url:String;
        
        /**
