     // Private Methods
     //----------------------------------
 
+    private function returnSpace():String
+    {
+        const fullYearIsNaN:Boolean = thisDate && isNaN(thisDate.fullYear);
+        const oneOfStyleIsNone:Boolean = (dateStyle == DateTimeStyle.NONE)
+                                        || (timeStyle == DateTimeStyle.NONE);
+
+        return (fullYearIsNaN || oneOfStyleIsNone) ? "" : " ";
+    }
+
     private function returnDate(dateTime:Date):String
     {
         if (isNaN(dateTime.fullYear))
             return "";
-        else
-        {
-            if (dateStyle == DateTimeStyle.SHORT)
-            {
-                space = " ";
+
+        switch (dateStyle)
+        {
+            case DateTimeStyle.SHORT:
                 return shortDate(dateTime);
-            }
-            else if (dateStyle == DateTimeStyle.MEDIUM)
-            {
-                space = " ";
+            case DateTimeStyle.MEDIUM:
                 return longDate(dateTime);
-            }
-            else if (dateStyle == DateTimeStyle.NONE)
-            {
-                space = "";
+            case DateTimeStyle.NONE:
                 return "";
-            }
-            else
-            {
-                space = " ";
-                return longDate(dateTime);
-            }
-        }
+        }
+
+        return longDate(dateTime);
     }
 
     private function returnTime(dateTime:Date):String
     {
         if (isNaN(dateTime.hours))
             return "";
+
+        switch (timeStyle)
+        {
+            case DateTimeStyle.SHORT:
+                return shortTime(dateTime);
+            case DateTimeStyle.MEDIUM:
+                return longTime(dateTime);
+            case DateTimeStyle.NONE:
+                return "";
+        }
+
+        return longTime(dateTime);
+    }
+
+    private function shortDate(dateTime:Date):String
+    {
+        if (utc)
+        {
+            return (dateTime.getUTCMonth() + 1) + "/"
+                + dateTime.getUTCDate() + "/"
+                + dateTime.getUTCFullYear();
+        }
+
+        return (dateTime.getMonth() + 1) + "/"
+                + dateTime.getDate() + "/"
+                + dateTime.getFullYear();
+    }
+
+    private function longDate(dateTime:Date):String
+    {
+        if (utc)
+        {
+            return (WEEKDAY_LABELS[dateTime.getUTCDay()] + ","+" "
+                + MONTH_LABELS[dateTime.getUTCMonth()])+" "
+                + dateTime.getUTCDate() + ","+" "
+                + dateTime.getUTCFullYear();
+        }
+
+        return (WEEKDAY_LABELS[dateTime.getDay()] + ","+" "
+            + MONTH_LABELS[dateTime.getMonth()])+" "
+            + dateTime.getDate() + ","+" "
+            + dateTime.getFullYear();
+    }
+
+    private function shortTime(dateTime:Date):String
+    {
+        localTime = utc ?
+            getUSClockTime(dateTime.getUTCHours(), dateTime.getUTCMinutes()) :
+            getUSClockTime(dateTime.getHours(), dateTime.getMinutes());
+
+        return localTime + " " + formatAMPM(dateTime);
+    }
+
+    private function longTime(dateTime:Date):String
+    {
+        var seconds:Number;
+
+        if (utc)
+        {
+            localTime = getUSClockTime(
+                            dateTime.getUTCHours(), dateTime.getUTCMinutes());
+            seconds = dateTime.getUTCSeconds();
+        }
         else
-        {
-            if (timeStyle == DateTimeStyle.SHORT)
-                return shortTime(dateTime);
-            else if (timeStyle == DateTimeStyle.MEDIUM)
-                return longTime(dateTime);
-            else if (timeStyle == DateTimeStyle.NONE)
-            {
-                space = "";
-                return "";
-            }
-            else
-                return longTime(dateTime);
-        }
-    }
-
-    private function shortDate(dateTime:Date):String
-    {
-        if (!utc)
-        {
-            return (doubleDigitFormat(dateTime.getMonth() + 1)) + "/"
-                + doubleDigitFormat(dateTime.getDate()) + "/"
-                + doubleDigitFormat(dateTime.getFullYear());
-        }
-        else
-        {
-            return (doubleDigitFormat(dateTime.getUTCMonth() + 1)) + "/"
-                + doubleDigitFormat(dateTime.getUTCDate()) + "/"
-                + doubleDigitFormat(dateTime.getUTCFullYear());
-        }
-    }
-
-    private function longDate(dateTime:Date):String
-    {
-        if (!utc)
-        {
-            return (WEEKDAY_LABELS[dateTime.getDay()] + ","
-                + MONTH_LABELS[dateTime.getMonth()])
-                + dateTime.getDate() + ","
-                + dateTime.getFullYear();
-        }
-        else
-        {
-            return (WEEKDAY_LABELS[dateTime.getUTCDay()] + ","
-                + MONTH_LABELS[dateTime.getUTCMonth()])
-                + dateTime.getUTCDate() + ","
-                + dateTime.getUTCFullYear();
-        }
-    }
-
-    private function shortTime(dateTime:Date):String
-    {
-        if (!utc)
         {
             localTime = getUSClockTime(
                                 dateTime.getHours(), dateTime.getMinutes());
-        }
-        else
-        {
-            localTime = getUSClockTime(
-                            dateTime.getUTCHours(), dateTime.getUTCMinutes());
-        }
-        return localTime + " " + formatAMPM(dateTime);
-    }
-
-    private function longTime(dateTime:Date):String
-    {
-        if (!utc)
-        {
-            localTime = getUSClockTime(
-                                dateTime.getHours(), dateTime.getMinutes());
-            return localTime + ":" + doubleDigitFormat(dateTime.getSeconds())
-                + " " + formatAMPM(dateTime);
-        }
-        else
-        {
-            localTime = getUSClockTime(
-                            dateTime.getUTCHours(), dateTime.getUTCMinutes());
-            return localTime + ":" + doubleDigitFormat(dateTime.getUTCSeconds())
-                + " " + formatAMPM(dateTime);
-        }
+            seconds = dateTime.getSeconds();
+        }
+
+        return localTime + ":" + doubleDigitFormat(seconds) + " "
+                                                        + formatAMPM(dateTime);
     }
 
     private function getUSClockTime(hrs:uint, mins:uint):String
     {
         const minLabel:String = doubleDigitFormat(mins);
 
-        if (hrs > 12)
-            hrs = hrs-12;
-        else if (hrs == 0)
-            hrs = 12;
-
-        return doubleDigitFormat(hrs) + ":" + minLabel;
+        hrs %= 12;
+        hrs = hrs ? hrs : 12;
+
+        return hrs + ":" + minLabel;
     }
 
     private function doubleDigitFormat(num:uint):String

    //----------------------------------

    private static const SHORT_DATE_PATTERN:String = "m/d/yyyy";
    private static const MEDIUM_DATE_PATTERN:String = "dddd, mmmm d, yyyy ";
    private static const LONG_DATE_PATTERN:String = "dddd, mmmm d, yyyy ";
    private static const NONE_DATE_PATTERN:String = "";

    private static const SHORT_TIME_PATTERN:String = "hh:mm a";

        {
            if (dateTimePatternOverride)
                g11nWorkingInstance.setDateTimePattern(dateTimePatternOverride);
            properties = g11nWorkingInstance;
            propagateBasicProperties(g11nWorkingInstance);
            return;
        }

