<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -3,350 +3,241 @@
 &lt;p&gt;Yammer uses &lt;a href=&quot;http://oauth.net/&quot; target=&quot;_blank&quot;&gt;OAuth&lt;/a&gt; to authenticate clients. This allows applications to securely access data on a user's behalf without storing or needing the user's password. 
 Before you can use Yammer.Net, you must first obtain a client key and secret from Yammer.  To do this, log into Yammer and navigate to &lt;a href=&quot;https://www.yammer.com/client_applications/new&quot; target=&quot;_blank&quot;&gt;https://www.yammer.com/client_applications/new&lt;/a&gt;.  This form will allow you to register your application.  Once you complete and submit the form you will be provided with your client key and secret.  Make a note of these; you'll need them to make use of the library.&lt;/p&gt;
 
-&lt;p&gt;Now that you have your client key and secret you are ready to being using the framework.  Create a new project and add references to the OAuth and Yammer assemblies.  Yammer.Net uses a settings file to persist authorization information between your application sessions.  This file is stored in the user's Application Data folder under Yammer\Data.  The first thing you should do when your application loads is check if this file exists:&lt;/p&gt;
+&lt;p&gt;Now that you have your client key and secret you are ready to being using the framework.  Create a new project and add references to the OAuth and Yammer assemblies.  The oAuth dance has been simplified from previous versions. To get started using the wrapper, now you just need to handle a few events and call Session.Start():&lt;/p&gt;
 
-&lt;pre&gt;&lt;code&gt;using System;    
-using System.Collections.Generic;    
-using System.Linq;    
-using System.Text;    
-namespace YammerNetExample    
+&lt;pre&gt;&lt;code&gt;static void Menu_Connect(object sender, EventArgs e)
 {
-    class Program
-    {
-        const string CONSUMER_KEY = &quot;myConsumerKey&quot;;
-        const string CONSUMER_SECRET = &quot;myConsumerSecret&quot;;
-        static void Main(string[] args)
-        {
-            Yammer.Settings settings = Yammer.Settings.CheckConfiguration();
-            if (settings == null)
-            {
-                //Need to configure client
-            }
-            else
-            {
-                //Client already configured, use persisted settings
-            }
-        }
-    }
-}
-&lt;/code&gt;&lt;/pre&gt;
-
-&lt;p&gt;Configuring your client for first time use is a three step process.  First, you must obtain a request token from Yammer using your client key and secret.   The Yammer.Auth.GetRequestToken member accepts three arguments: proxy, consumerKey and consumerSecret .  If your client won't be behind a proxy, you can pass in a null for this argument.  After obtaining the request token you can allow the user to authorize your application.  If you would like the user to be redirected to your website after authorizing with Yammer, you can provide a value for the callbackUrl argument of the Yammer.Auth.Authorize member.&lt;/p&gt;
-
-&lt;pre&gt;&lt;code&gt;private static Yammer.Auth GetRequestToken()
-{
-    Yammer.Auth auth = Yammer.Auth.GetRequestToken(null, CONSUMER_KEY, CONSUMER_SECRET);
-    if (auth != null)
-    {
-        auth.Authorize(null);
-        Console.WriteLine(&quot;We've opened up a browser so you can authenticate this application with Yammer.&quot;);
-        Console.WriteLine(&quot;Once you've authenticated, press any key to continue.&quot;);
-        Console.ReadLine();
-    }
-    return auth;
-}
-&lt;/code&gt;&lt;/pre&gt;
-
-&lt;p&gt;The framework will open a browser and allow the user to authorize your application.  Once the user authorizes through the Yammer website, your application can request its permanent access key and secret:&lt;/p&gt;
-
-&lt;pre&gt;&lt;code&gt;private static void GetAccessToken(Yammer.Auth auth)
-{
-    if (auth != null)
-        auth.GetAccessToken();
-
-    if (auth.Success)
-    {
-        Console.WriteLine(&quot;Welcome to my Yammer application!&quot;);
-        Console.ReadLine();
-    }
+     Console.WriteLine(&quot;You will need to authorize this appliction to continue.\r\nWe'll open a browser window where you can login to\r\nYammer to complete the authorization.\r\nPress any key to continue&quot;);
+     Console.Read();
+     Yammer.Session.ReceiveRequestToken += new EventHandler(Session_ReceiveRequestToken);
+     Yammer.Session.AuthorizationComplete += new EventHandler(Session_AuthorizationComplete);
+     Yammer.Session.Start();
+     Console.ReadLine();
 }
 &lt;/code&gt;&lt;/pre&gt;
 
-&lt;p&gt;After performing these three steps (GetRequestToken(), Authorize(), and GetAccessToken()), your application will be configured to communicate with Yammer.  The next step is to start making calls to the Yammer API.  To continue with my console example, I've added some code to handle a few menu options:&lt;/p&gt;
+&lt;p&gt;Now you'll need to set up the even handlers:&lt;/p&gt;
 
-&lt;pre&gt;&lt;code&gt;public static void ReadMessages(List&amp;lt;Yammer.Message&amp;gt; messages)
+&lt;pre&gt;&lt;code&gt;static void Session_AuthorizationComplete(object sender, EventArgs e)
 {
-    Console.WriteLine();
-    foreach (Yammer.Message msg in messages)
-    {
-        string body = msg.Body.Plain;
-        string timeStamp = msg.CreatedAt;
-
-        Yammer.User sender = null;
-        Yammer.Guide guide = null;
-        Yammer.Message repliedToMessage = null;
-        Yammer.User repliedToUser = null;
-
-        //if message sent from user, store user information
-        if (msg.SenderType.ToUpper() == Yammer.SenderType.USER.ToString())
-            sender = msg.References.Users.Find(delegate(Yammer.User u) { return u.Id == msg.SenderId.ToString(); });
-
-        //if message sent from guide, store guid information
-        if (msg.SenderType.ToUpper() == Yammer.SenderType.SYSTEM.ToString()) 
-            guide = msg.References.Guide;
-
-        //if message is a reply, store replied-to-message
-        if (msg.RepliedToId != null &amp;amp;&amp;amp; msg.RepliedToId != string.Empty)
-            repliedToMessage = msg.References.Messages.Find(delegate(Yammer.Message m) { return m.Id == msg.RepliedToId; });
-
-        //if reply-to-message exists, store replied-to-user
-        if(repliedToMessage != null)
-            repliedToUser = msg.References.Users.Find(delegate(Yammer.User u) { return int.Parse(u.Id) == repliedToMessage.SenderId; });
-
-        StringBuilder sb = new StringBuilder();
-        //Write sender name
-        if(sender != null)
-            sb.Append(sender.FullName);
-        //Write guid name
-        if (guide != null)
-            sb.Append(guide.FullName);
-        //Write replied-to-user name
-        if (repliedToUser != null)
-            sb.Append(&quot; in-reply-to: &quot; + repliedToUser.FullName);
-        sb.AppendLine();
-
-        //Write message body
-        sb.AppendLine(body);
-
-        //Write attachments
-        if (msg.Attachments.Count &amp;gt; 0)
-            foreach (Yammer.Attachment attachment in msg.Attachments)
-                sb.AppendLine(attachment.Name);
-
-        //Write timestamp
-        sb.AppendLine(timeStamp);
-
-        Console.WriteLine(sb.ToString());
-    }
+     if (Yammer.Session.Auth.Success)
+     {
+          Console.WriteLine(&quot;Connected, Please enter a command:&quot;);
+          Menu.Display(false);
+     }
 }
 
-
-public static void PostMessage(string input, Yammer.Session session)
+static void Session_ReceiveRequestToken(object sender, EventArgs e)
 {
-    //parse message
-    string pattern = &quot;-m\\s\&quot;+.+?\&quot;&quot;;
-    System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.Singleline);
-    System.Text.RegularExpressions.Match message = regex.Match(input);
-    string body = string.Empty;
-    if (message != null)
-        body = message.Value.Replace(&quot;-m&quot;, &quot;&quot;).Trim().Replace(&quot;\&quot;&quot;,&quot;&quot;);
-
-    //parse attachments
-    pattern = &quot;-a\\s\&quot;+.+?\&quot;&quot;;
-    regex = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.Singleline);
-    List&amp;lt;string&amp;gt; attachmentList = new List&amp;lt;string&amp;gt;();
-    if (regex.IsMatch(input))
-    {
-        message = regex.Match(input);
-        attachmentList.AddRange(message.Value.Replace(&quot;-a&quot;, &quot;&quot;).Trim().Replace(&quot;\&quot;&quot;, &quot;&quot;).Split(';'));
-    }
-
-    //post message
-    Yammer.ApiWrapper.PostMessage(body, session, attachmentList);
+     string message = &quot;Once you've logged in and authorized this application via your browser, please \r\nenter the provided code and press enter to start using Yammer.&quot;;
+     Console.WriteLine(message);
+     string code = Console.ReadLine();
+     if (Yammer.Session.Auth != null)
+          Yammer.Session.Auth.GetAccessToken(code);
 }
 &lt;/code&gt;&lt;/pre&gt;
 
-&lt;p&gt;The Yammer.ApiWrapper.PostMessage member accepts a list of attachments.  This list should be a string of paths to attach with the message.&lt;/p&gt;
-
-&lt;p&gt;The following is the complete source for the example console app used to illustrate these steps:&lt;/p&gt;
+&lt;p&gt;That's about it for authorization, now you can start making calls to the Yammer API. The following sample source illustrates various calls to the API. The complete code is available in the project source:&lt;/p&gt;
 
 &lt;pre&gt;&lt;code&gt;using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
-using System.Net;
+using System.Reflection;
 
-namespace YammerNetExample
+namespace TestConsole
 {
-    /// &amp;lt;summary&amp;gt;
+    /// &lt;summary&gt;
     /// Yammer.Net example
-    /// &amp;lt;/summary&amp;gt;
-    /// &amp;lt;example&amp;gt;
+    /// &lt;/summary&gt;
+    /// &lt;example&gt;
     /// yam myfeed
+    /// yam sent
     /// yam post -m &quot;this is a sample post&quot;
     /// yam post -m &quot;this is a sample post with an attachment&quot; -a &quot;c:\myImage.gif&quot;
     /// yam post -m &quot;this is a sample post with multiple attachments&quot; -a &quot;c:\myImage.gif;c:\myText.txt&quot;
-    /// &amp;lt;/example&amp;gt;
+    /// yam viewuser -uid &quot;kevin&quot;
+    /// yam viewuser -all
+    /// yam currentuser
+    /// yam updateuser -uid &quot;kevin&quot; -params &quot;MobilePhone=602-555-5555&quot;
+    /// yam updateuser -uid &quot;kevin&quot; -params &quot;MobilePhone=602-555-1111;Location=Phoenix&quot;
+    /// yam deleteuser -uid &quot;elisabeth-poo-waller&quot; 
+    /// &lt;/example&gt;
     class Program
     {
-        const string CONSUMER_KEY = &quot;myConsumerKey&quot;;
-        const string CONSUMER_SECRET = &quot;myConsumerSecret&quot;;
-        const string RETRIEVE_MY_FEED = &quot;yam myfeed&quot;;
-        const string POST_MESSAGE = &quot;yam post&quot;;
         static void Main(string[] args)
         {
-            Yammer.Settings settings = Yammer.Settings.CheckConfiguration();
-            if (settings == null)
-            {
-                Yammer.Auth auth = GetRequestToken();
-                GetAccessToken(auth);
-            }
-            else
-                Menu(true, ConfigureClient(settings), null, null);
+            Menu.Connect += new EventHandler(Menu_Connect);
+            Menu.RetrieveFeed += new EventHandler(Menu_RetrieveFeed);
+            Menu.PostMessage += new InputEventHandler(Menu_PostMessage);
+            Menu.ViewUser += new InputEventHandler(Menu_ViewUser);
+            Menu.CurrentUser += new InputEventHandler(Menu_CurrentUser);
+            Menu.UpdateUser += new InputEventHandler(Menu_UpdateUser);
+            Menu.DeleteUser += new InputEventHandler(Menu_DeleteUser);
+            Menu.Display(true);
         }
 
-        private static OAuth.OAuthKey ConfigureClient(Yammer.Settings settings)
+        static void Menu_Connect(object sender, EventArgs e)
         {
-            OAuth.OAuthKey key = new OAuth.OAuthKey(CONSUMER_KEY, CONSUMER_SECRET, settings.OAuth.TokenKey, settings.OAuth.TokenSecret);
-            WebProxy proxy = null;
-            if (settings.Proxy.Enable)
-            {
-                proxy = new System.Net.WebProxy();
-                proxy.Address = new Uri(settings.Proxy.Address + &quot;:&quot; + settings.Proxy.Port);
-                proxy.Credentials = new NetworkCredential(settings.Proxy.Id, settings.Proxy.Password);
-            }
-            return key;
+            Console.WriteLine(&quot;You will need to authorize this appliction to continue.\r\nWe'll open a browser window where you can login to\r\nYammer to complete the authorization.\r\nPress any key to continue&quot;);
+            Console.Read();
+            Yammer.Session.ReceiveRequestToken += new EventHandler(Session_ReceiveRequestToken);
+            Yammer.Session.AuthorizationComplete += new EventHandler(Session_AuthorizationComplete);
+            Yammer.Session.Start();
+            Console.ReadLine();
         }
 
-        public static Yammer.Auth GetRequestToken()
-        {
-        Yammer.Auth auth = Yammer.Auth.GetRequestToken(null, CONSUMER_KEY, CONSUMER_SECRET);
-        if (auth != null)
+        static void Menu_RetrieveFeed(object sender, EventArgs e)
         {
-            auth.Authorize(null);
-            Console.WriteLine(&quot;We've opened up a browser so you can authenticate this application with Yammer.&quot;);
-            Console.WriteLine(&quot;Once you've authenticated, press any key to continue.&quot;);
+            foreach (Yammer.Message msg in Menu.Messages)
+            {
+                object[] args = null;
+
+                if (msg.Sender != null)
+                    args = new object[] { msg.Sender.Name, msg.Body.Plain, msg.CreatedAt };
+                else
+                {
+                    if (msg.Guide != null)
+                        args = new object[] { msg.Guide.Name, msg.Body.Plain, msg.CreatedAt };
+                }
+
+                Console.WriteLine(string.Format(&quot;{0}\r\n{1}\r\n{2}\r\n&quot;, args));
+            }
             Console.ReadLine();
         }
-        return auth;
-        }
 
-        public static void GetAccessToken(Yammer.Auth auth)
+        static void Menu_PostMessage(InputEventArgs e)
         {
-            if (auth != null)
-                auth.GetAccessToken();
+            MatchPattern[] patterns = new MatchPattern[] { new MatchPattern(&quot;-m&quot;, true), new MatchPattern(&quot;-a&quot;, true) };
+
+            Dictionary&lt;string, string&gt; parameters = Menu.ParseInput(e.Input, patterns);
+
+            string body = string.Empty;
+            if (parameters.ContainsKey(&quot;-m&quot;))
+                body = parameters[&quot;-m&quot;];
 
-            if (auth.Success)
-                Menu(true, auth.Key, null, null);
+            List&lt;string&gt; attachmentList = new List&lt;string&gt;();
+            if (parameters.ContainsKey(&quot;-a&quot;))
+                attachmentList.AddRange(parameters[&quot;-a&quot;].Split(';'));
 
+            //post message
+            Yammer.Message.PostMessage(body, attachmentList);
         }
 
-        public static void Menu(bool welcome, OAuth.OAuthKey key, WebProxy proxy, Yammer.Session session)
+        static void Menu_ViewUser(InputEventArgs e)
         {
-            if(session == null)
-                session = new Yammer.Session(key, proxy);
-
-            if (welcome)
+            MatchPattern[] patterns = new MatchPattern[] { new MatchPattern(&quot;-uid&quot;, true), new MatchPattern(&quot;-all&quot;, false) };
+            Dictionary&lt;string, string&gt; parameters = Menu.ParseInput(e.Input, patterns);
+            string uid = string.Empty;
+            if (parameters.ContainsKey(&quot;-uid&quot;))
             {
-                Console.WriteLine(&quot;Welcome to my Yammer application!&quot;);
-                welcome = false;
+                uid = parameters[&quot;-uid&quot;];
+                Yammer.User user = Yammer.User.GetUserByUserName(uid);
+                if (user != null)
+                {
+                    object[] args = new object[] { user.Name, user.JobTitle, user.MugshotUrl, user.WebUrl, user.Contact.PhoneNumbers[0].Number, user.Location };
+                    Console.WriteLine(string.Format(&quot;UserName:{0}\r\nTitle:{1}\r\nAvatar:{2}\r\nUrl:{3}\r\nMobilePhone:{4}\r\nLocation:{5}&quot;, args));
+                }
+                else
+                    Console.WriteLine(&quot;User not found&quot;);
             }
-
-            string input = Console.ReadLine();
-            string option = ParseInput(input);
-
-            switch (option)
+            else if (parameters.ContainsKey(&quot;-all&quot;))
             {
-                case RETRIEVE_MY_FEED:
-                    ReadMessages(Yammer.ApiWrapper.GetFollowingMessages(session));
-                    break;
-                case POST_MESSAGE:
-                    PostMessage(input, session);
-                    break;
+                List&lt;Yammer.User&gt; users = Yammer.User.GetAllUsers();
+                foreach (Yammer.User u in users)
+                {
+                    object[] args = new object[] { u.Name, u.JobTitle, u.MugshotUrl, u.WebUrl, u.Contact.PhoneNumbers.Count &gt; 0 ? u.Contact.PhoneNumbers[0].Number : string.Empty, u.Location };
+                    Console.WriteLine(string.Format(&quot;UserName:{0}\r\nTitle:{1}\r\nAvatar:{2}\r\nUrl:{3}\r\nMobilePhone:{4}\r\n\r\nLocation:{5}&quot;, args));
+                }
             }
 
-            Menu(welcome, key, proxy, session);
+        }
 
+        static void Menu_CurrentUser(InputEventArgs e)
+        {
+            string input = e.Input;
+            Yammer.User user = Yammer.User.GetCurrentUser();
+            object[] args = new object[] { user.Name, user.JobTitle, user.MugshotUrl, user.WebUrl, user.Contact.PhoneNumbers[0].Number, user.Location };
+            Console.WriteLine(string.Format(&quot;UserName:{0}\r\nTitle:{1}\r\nAvatar:{2}\r\nUrl:{3}\r\nMobilePhone:{4}\r\nLocation:{5}&quot;, args));
         }
 
-        public static string ParseInput(string input)
+        static void Menu_UpdateUser(InputEventArgs e)
         {
-            if (input.ToLower().Contains(RETRIEVE_MY_FEED))
-                return RETRIEVE_MY_FEED;
+            MatchPattern[] patterns = new MatchPattern[] { new MatchPattern(&quot;-uid&quot;, true), new MatchPattern(&quot;-params&quot;, true) };
+            Dictionary&lt;string, string&gt; parameters = Menu.ParseInput(e.Input, patterns);
 
-            if (input.ToLower().Contains(POST_MESSAGE))
-                return POST_MESSAGE;
+            string uid = string.Empty;
+            if (parameters.ContainsKey(&quot;-uid&quot;))
+                uid = parameters[&quot;-uid&quot;];
 
-            return null;
-        }
+            Yammer.User user = null;
+            if (uid != null &amp;&amp; uid != string.Empty)
+                user = Yammer.User.GetUserByUserName(uid);
 
-        public static void ReadMessages(List&amp;lt;Yammer.Message&amp;gt; messages)
-        {
-            Console.WriteLine();
-            foreach (Yammer.Message msg in messages)
+            string attributes = string.Empty;
+            Yammer.UserParameters userParams = null;
+            List&lt;PropertyInfo&gt; properties = null;
+            string[] props = null;
+
+            if (parameters.ContainsKey(&quot;-params&quot;))
             {
-                string body = msg.Body.Plain;
-                string timeStamp = msg.CreatedAt;
-
-                Yammer.User sender = null;
-                Yammer.Guide guide = null;
-                Yammer.Message repliedToMessage = null;
-                Yammer.User repliedToUser = null;
-
-                //if message sent from user store user information
-                if (msg.SenderType.ToUpper() == Yammer.SenderType.USER.ToString())
-                    sender = msg.References.Users.Find(delegate(Yammer.User u) { return u.Id == msg.SenderId.ToString(); });
-
-                //if message sent from guide store guid information
-                if (msg.SenderType.ToUpper() == Yammer.SenderType.SYSTEM.ToString()) 
-                    guide = msg.References.Guide;
-
-                //if message is a reply, store replied-to-message
-                if (msg.RepliedToId != null &amp;amp;&amp;amp; msg.RepliedToId != string.Empty)
-                    repliedToMessage = msg.References.Messages.Find(delegate(Yammer.Message m) { return m.Id == msg.RepliedToId; });
-
-                //if reply-to-message exists, store replied-to-user
-                if(repliedToMessage != null)
-                    repliedToUser = msg.References.Users.Find(delegate(Yammer.User u) { return int.Parse(u.Id) == repliedToMessage.SenderId; });
-
-                StringBuilder sb = new StringBuilder();
-                //Write sender name
-                if(sender != null)
-                    sb.Append(sender.FullName);
-                //Write guid name
-                if (guide != null)
-                    sb.Append(guide.FullName);
-                //Write replied-to-user name
-                if (repliedToUser != null)
-                    sb.Append(&quot; in-reply-to: &quot; + repliedToUser.FullName);
-                sb.AppendLine();
-
-                //Write message body
-                sb.AppendLine(body);
-
-                //Write attachments
-                if (msg.Attachments.Count &amp;gt; 0)
-                    foreach (Yammer.Attachment attachment in msg.Attachments)
-                        sb.AppendLine(attachment.Name);
-
-                //Write timestamp
-                sb.AppendLine(timeStamp);
-
-                Console.WriteLine(sb.ToString());
+                attributes = parameters[&quot;-params&quot;];
+                props = attributes.Split(';');
+                userParams = new Yammer.UserParameters();
+                properties = new List&lt;PropertyInfo&gt;(userParams.GetType().GetProperties());
+            }
+
+            foreach (string prop in props)
+            {
+                string[] hash = prop.Split('=');
+
+                PropertyInfo property = properties.Find(delegate(PropertyInfo p) { return p.Name == hash[0]; });
+                if (property != null)
+                    property.SetValue(userParams, hash[1], null);
             }
+
+            if(user != null)
+                user.Save(userParams);
+
         }
 
+        static void Menu_DeleteUser(InputEventArgs e)
+        {
+            MatchPattern[] patterns = new MatchPattern[] { new MatchPattern(&quot;-uid&quot;, true) };
+            Dictionary&lt;string, string&gt; parameters = Menu.ParseInput(e.Input, patterns);
+            string uid = string.Empty;
+            if (parameters.ContainsKey(&quot;-uid&quot;))
+                uid = parameters[&quot;-uid&quot;];
+
+            if(uid != null &amp;&amp; uid != string.Empty)
+                Yammer.User.GetUserByUserName(uid).Delete();
+        }
 
-        public static void PostMessage(string input, Yammer.Session session)
+        static void Session_AuthorizationComplete(object sender, EventArgs e)
         {
-            //parse message
-            string pattern = &quot;-m\\s\&quot;+.+?\&quot;&quot;;
-            System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.Singleline);
-            System.Text.RegularExpressions.Match message = regex.Match(input);
-            string body = string.Empty;
-            if (message != null)
-                body = message.Value.Replace(&quot;-m&quot;, &quot;&quot;).Trim().Replace(&quot;\&quot;&quot;,&quot;&quot;);
-
-            //parse attachments
-            pattern = &quot;-a\\s\&quot;+.+?\&quot;&quot;;
-            regex = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.Singleline);
-            List&amp;lt;string&amp;gt; attachmentList = new List&amp;lt;string&amp;gt;();
-            if (regex.IsMatch(input))
+            if (Yammer.Session.Auth.Success)
             {
-                message = regex.Match(input);
-                attachmentList.AddRange(message.Value.Replace(&quot;-a&quot;, &quot;&quot;).Trim().Replace(&quot;\&quot;&quot;, &quot;&quot;).Split(';'));
+                Console.WriteLine(&quot;Connected, Please enter a command:&quot;);
+                Menu.Display(false);
             }
+        }
 
-            //post message
-            Yammer.ApiWrapper.PostMessage(body, session, attachmentList);
+        static void Session_ReceiveRequestToken(object sender, EventArgs e)
+        {
+            string message = &quot;Once you've logged in and authorized this application via your browser, please \r\nenter the provided code and press enter to start using Yammer.&quot;;
+            Console.WriteLine(message);
+            string code = Console.ReadLine();
+            if (Yammer.Session.Auth != null)
+                Yammer.Session.Auth.GetAccessToken(code);
         }
+
+
     }
 }
+
 &lt;/code&gt;&lt;/pre&gt;
 
-&lt;h2&gt;&lt;span style=&quot;color:#4183C4&quot;&gt;Documentation&lt;/span&gt;&lt;/h2&gt;
 
-&lt;p&gt;&lt;a href=&quot;http://kdavie.github.com/yammer.net/documentation/Index.html&quot; target=&quot;_blank&quot;&gt;HTML Documentation&lt;/a&gt;&lt;/p&gt;
 
 &lt;h2&gt;&lt;span style=&quot;color:#4183C4&quot;&gt;License&lt;/span&gt;&lt;/h2&gt;
 
@@ -358,4 +249,4 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
 
 &lt;p style=&quot;font-size:10pt;&quot;&gt;
 THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-&lt;/p&gt;
\ No newline at end of file
+&lt;/p&gt;</diff>
      <filename>README.md</filename>
    </modified>
    <modified>
      <diff>@@ -107,7 +107,7 @@ namespace Yammer
         /// &lt;returns&gt;&lt;/returns&gt;
         public static List&lt;Message&gt; GetFollowingMessages(PageFlag flag, int id, Session session)
         {
-            if(flag == PageFlag.NEWER_THAN)
+            if (flag == PageFlag.NEWER_THAN)
                 return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_FOLLOWING + &quot;?newer_than=&quot; + id.ToString(), session));
             else
                 return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_FOLLOWING + &quot;?older_than=&quot; + id.ToString(), session));
@@ -121,7 +121,7 @@ namespace Yammer
         /// &lt;returns&gt;&lt;/returns&gt;
         public static List&lt;Message&gt; GetMessagesSentBy(int id, Session session)
         {
-            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_SENT_BY + id.ToString() + &quot;.xml&quot; , session)); 
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_SENT_BY + id.ToString() + &quot;.xml&quot;, session));
         }
 
         /// &lt;summary&gt;
@@ -132,7 +132,7 @@ namespace Yammer
         /// &lt;returns&gt;&lt;/returns&gt;
         public static List&lt;Message&gt; GetMessagesTaggedWith(int id, Session session)
         {
-            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_TAGGED_WITH + id.ToString() + &quot;.xml&quot;, session)); 
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_TAGGED_WITH + id.ToString() + &quot;.xml&quot;, session));
         }
 
         /// &lt;summary&gt;
@@ -143,7 +143,7 @@ namespace Yammer
         /// &lt;returns&gt;&lt;/returns&gt;
         public static List&lt;Message&gt; GetMessagesInThread(int id, Session session)
         {
-            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_IN_THREAD + id.ToString() + &quot;.xml&quot;, session)); 
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_IN_THREAD + id.ToString() + &quot;.xml&quot;, session));
         }
 
         /// &lt;summary&gt;
@@ -154,7 +154,7 @@ namespace Yammer
         /// &lt;returns&gt;&lt;/returns&gt;
         public static List&lt;Message&gt; GetMessagesInGroup(int id, Session session)
         {
-            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_IN_GROUP + id.ToString() + &quot;.xml&quot;, session)); 
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_IN_GROUP + id.ToString() + &quot;.xml&quot;, session));
         }
 
         /// &lt;summary&gt;
@@ -178,11 +178,11 @@ namespace Yammer
             NameValueCollection parameters = new NameValueCollection();
             parameters.Add(&quot;body&quot;, body);
             string response;
-            if(attachments.Count &gt; 0)
+            if (attachments.Count &gt; 0)
                 Yammer.HttpUtility.Upload(Resources.YAMMER_MESSAGES_CREATE, parameters, session, attachments);
             else
                 response = Yammer.HttpUtility.Post(Resources.YAMMER_MESSAGES_CREATE, parameters, session);
-                
+
         }
 
         /// &lt;summary&gt;
@@ -214,7 +214,7 @@ namespace Yammer
 
         }
 
-       
+
 
         #endregion
 
@@ -276,7 +276,7 @@ namespace Yammer
         public static void LeaveGroup(int id, Session session)
         {
             GroupMembership(id, session);
-            
+
         }
 
         private static void GroupMembership(int id, Session session)
@@ -461,7 +461,7 @@ namespace Yammer
         {
             if (message != null)
                 message.References.Messages.Add(reference);
-            
+
         }
 
         private static void SetMessageReference(Message message, Guide reference)
@@ -586,4 +586,4 @@ namespace Yammer
         #endregion
 
     }
-}
+}
\ No newline at end of file</diff>
      <filename>Yammer Framework/Yammer/ApiWrapper.cs</filename>
    </modified>
    <modified>
      <diff>@@ -8,6 +8,7 @@ using System.Net;
 using System.Diagnostics;
 using System.Xml.Serialization;
 using System.IO;
+using System.Collections.Specialized;
 
 namespace Yammer
 {
@@ -15,7 +16,7 @@ namespace Yammer
     {
         #region Ctor
 
-        private Auth()
+        public Auth()
         {
 
         }
@@ -28,35 +29,60 @@ namespace Yammer
         /// The client Web Proxy.  Can be null
         /// &lt;/summary&gt;
         /// &lt;remarks&gt;&lt;/remarks&gt;
+        [XmlIgnore]
         public WebProxy Proxy { get; set; }
 
         /// &lt;summary&gt;
         /// The OAuth key to use
         /// &lt;/summary&gt;
+        [XmlElement]
         public OAuthKey Key { get; set; }
 
         /// &lt;summary&gt;
         /// The client's consumer key
         /// &lt;/summary&gt;
+        [XmlElement]
         private string ConsumerKey { get; set; }
 
         /// &lt;summary&gt;
         /// The client's consumer secret
         /// &lt;/summary&gt;
+        [XmlElement]
         private string ConsumerSecret { get; set; }
 
         /// &lt;summary&gt;
         /// The persisted client settings file.
         /// &lt;/summary&gt;
+        [XmlElement]
         public Settings Settings { get; set; }
 
         /// &lt;summary&gt;
         /// Connection success indicator
         /// &lt;/summary&gt;
-        public bool Success { get; set; }
+        [XmlElement]
+        public bool Success
+        {
+            get
+            {
+                return success;
+            }
+            set
+            {
+                success = value;
+                OnAuthorizationComplete();
+            }
+        }
+
+        private bool success;
 
         #endregion
 
+        public event EventHandler AuthorizationComplete;
+        public void OnAuthorizationComplete()
+        {
+            if (this.AuthorizationComplete != null)
+                this.AuthorizationComplete(this, new EventArgs());
+        }
         #region Helper Methods
 
         /// &lt;summary&gt;
@@ -68,7 +94,7 @@ namespace Yammer
         private string GetRequestTokenQuery(string consumerKey, string consumerSecret)
         {
             //TODO: Utilize Yammer.HttpUtility for get
-            Uri uri = new Uri(&quot;https://www.yammer.com/oauth/request_token&quot;);
+            Uri uri = new Uri(Resources.OAUTH_REQUEST_TOKEN);
             string nurl;
             string nrp;
 
@@ -114,9 +140,9 @@ namespace Yammer
         /// Retrieves OAuth access token
         /// &lt;/summary&gt;
         /// &lt;returns&gt;the OAuth access token query string&lt;/returns&gt;
-        private string GetAccessTokenQuery()
+        private string GetAccessTokenQuery(string callbackToken)
         {
-            Uri uri = new Uri(Resources.OAUTH_ACCESS_TOKEN);
+            Uri uri = new Uri(Resources.OAUTH_ACCESS_TOKEN + &quot;?callback_token=&quot; + callbackToken);
             string nurl;
             string nrp;
 
@@ -143,7 +169,7 @@ namespace Yammer
             sig = System.Web.HttpUtility.UrlEncode(sig);
 
             StringBuilder sb = new StringBuilder(uri.ToString());
-            sb.AppendFormat(&quot;?oauth_consumer_key={0}&amp;&quot;, Key.ConsumerKey);
+            sb.AppendFormat(&quot;&amp;oauth_consumer_key={0}&amp;&quot;, Key.ConsumerKey);
             sb.AppendFormat(&quot;oauth_token={0}&amp;&quot;, Key.TokenKey);
             sb.AppendFormat(&quot;oauth_signature_method={0}&amp;&quot;, &quot;HMAC-SHA1&quot;);
             sb.AppendFormat(&quot;oauth_timestamp={0}&amp;&quot;, timeStamp);
@@ -205,11 +231,12 @@ namespace Yammer
         /// Retrieves the authorization information from the server
         /// and saves it the persisted see cref=&quot;Settings&quot;&gt;settings&lt;/see&gt; file
         /// &lt;/summary&gt;
-        public void GetAccessToken()
+        public void GetAccessToken(string callbackToken)
         {
             try
             {
-                HttpWebRequest request = Yammer.HttpUtility.CreateWebRequest(WebMethod.POST, this.Proxy, GetAccessTokenQuery(), true);
+                HttpWebRequest request = Yammer.HttpUtility.CreateWebRequest(WebMethod.POST, this.Proxy, GetAccessTokenQuery(callbackToken), true);
+               
                 string response = Yammer.HttpUtility.GetWebResponse(request);
                 string tokenKey;
                 string tokenSecret;
@@ -218,6 +245,12 @@ namespace Yammer
                 Settings.SaveConfiguration(tokenKey, tokenSecret,this.Key, this.Proxy);
                 this.Success = true;
             }
+            catch (WebException ex)
+            {
+                this.Success = false;
+                if (ex.Message.Trim() == &quot;The remote server returned an error: (401) Unauthorized.&quot;)
+                    System.Windows.Forms.MessageBox.Show(&quot;You must authorize this application before continuing.&quot;);
+            }
             catch (Exception ex)
             {
                 this.Success = false;</diff>
      <filename>Yammer Framework/Yammer/Auth.cs</filename>
    </modified>
    <modified>
      <diff>@@ -196,7 +196,7 @@
       &lt;FileName&gt;User.cs&lt;/FileName&gt;
     &lt;/TypeIdentifier&gt;
   &lt;/Class&gt;
-  &lt;Class Name=&quot;Yammer.UserStats&quot; Collapsed=&quot;true&quot;&gt;
+  &lt;Class Name=&quot;Yammer.Stats&quot; Collapsed=&quot;true&quot;&gt;
     &lt;Position X=&quot;7.5&quot; Y=&quot;4.5&quot; Width=&quot;1.5&quot; /&gt;
     &lt;TypeIdentifier&gt;
       &lt;HashCode&gt;AAAAAAAAAAAAAAAgCAAAAAAAAAAAAAAAAAAAAgAAAAA=&lt;/HashCode&gt;</diff>
      <filename>Yammer Framework/Yammer/ClassDiagram1.cd</filename>
    </modified>
    <modified>
      <diff>@@ -11,6 +11,7 @@ namespace Yammer
         IMAGE,
         FILE
     }
+
     public enum SenderType
     {
         USER,
@@ -51,6 +52,24 @@ namespace Yammer
     {
         GET,
         POST,
-        DELETE
+        DELETE,
+        PUT
+    }
+
+    public enum SortBy
+    {
+        NONE,
+        MESSAGES,
+        MEMBERS,
+        PRIVACY,
+        CREATED_AT,
+        CREATOR,
+        FOLLOWERS
+    }
+
+    public enum SuggestionType
+    {
+        USER,
+        GROUP
     }
 }</diff>
      <filename>Yammer Framework/Yammer/Enumerations.cs</filename>
    </modified>
    <modified>
      <diff>@@ -4,6 +4,8 @@ using System.Linq;
 using System.Text;
 using System.Runtime.Serialization;
 using System.Xml.Serialization;
+using System.Xml;
+using System.Collections.Specialized;
 
 namespace Yammer
 {
@@ -11,6 +13,9 @@ namespace Yammer
     [XmlRoot(ElementName = &quot;group&quot;)]
     public class Group
     {
+
+        #region Yammer Properties
+
         /// &lt;summary&gt;
         /// The object type, such as user, tag, etc.
         /// &lt;/summary&gt;
@@ -70,6 +75,98 @@ namespace Yammer
         [XmlElement(ElementName = &quot;stats&quot;)]
         public GroupStats Stats { get; set; }
 
+        #endregion
+
+
+        internal static List&lt;Group&gt; GetAllGroups(string data)
+        {
+            XmlDocument xdoc = new XmlDocument();
+            xdoc.LoadXml(data);
+
+            XmlNodeList nodes = xdoc.SelectNodes(&quot;/response/response&quot;);
+            List&lt;Group&gt; groups = new List&lt;Group&gt;();
+            foreach (XmlNode node in nodes)
+            {
+                Group group = (Group)Utility.Deserialize(typeof(Group), &quot;&lt;group&gt;&quot; + node.InnerXml + &quot;&lt;/group&gt;&quot;);
+                groups.Add(group);
+            }
+            return groups;
+        }
+
+        internal static Group GetGroup(string data)
+        {
+            XmlDocument xdoc = new XmlDocument();
+            xdoc.LoadXml(data);
+            XmlNode node = xdoc.SelectSingleNode(&quot;/response&quot;);
+            Group group = (Group)Utility.Deserialize(typeof(Group), &quot;&lt;group&gt;&quot; + node.InnerXml + &quot;&lt;/group&gt;&quot;);
+            return group;
+        }
+
+        /// &lt;summary&gt;
+        /// Retrieves a list of all groups
+        /// &lt;/summary&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Group&gt; GetAllGroups()
+        {
+            string response = Yammer.HttpUtility.Get(Resources.YAMMER_GROUP_LIST);
+            return Group.GetAllGroups(response);
+        }
+
+        public static List&lt;Group&gt; GetAllGroups(MembershipParameters groupParams)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            Yammer.Utility.AddMembershipParams(parameters, groupParams);
+            string response = Yammer.HttpUtility.Get(Resources.YAMMER_GROUP_LIST,parameters);
+            return Group.GetAllGroups(response);
+        }
+
+
+        /// &lt;summary&gt;
+        /// Retrieves data about group of given id
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static Group GetGroupById(int id)
+        {
+            string response = Yammer.HttpUtility.Get(Resources.YAMMER_GROUP_DATA + id.ToString() + &quot;.xml&quot;);
+            return Group.GetGroup(response);
+        }
+
+        //page, sort_by, letter, reverse
+
+
+        /// &lt;summary&gt;
+        /// Join a group.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+        public static void JoinGroup(int id)
+        {
+            GroupMembership(id);
+        }
+
+        /// &lt;summary&gt;
+        /// Leave a group.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+        public static void LeaveGroup(int id)
+        {
+            GroupMembership(id);
+
+        }
+
+        private static void GroupMembership(int id)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;group_id&quot;, id.ToString());
+            Yammer.HttpUtility.Post(Resources.YAMMER_GROUP_JOIN + id.ToString() + &quot;.xml&quot;, parameters);
+        }
+
+
+
+
+
     }
 
     public class GroupStats</diff>
      <filename>Yammer Framework/Yammer/Group.cs</filename>
    </modified>
    <modified>
      <diff>@@ -13,6 +13,13 @@ namespace Yammer
 {
     public static class HttpUtility
     {
+        public static string Get(string url)
+        {
+            string nonce, timestamp;
+            string signature = GetSignature(WebMethod.GET, url, out timestamp, out nonce);
+            HttpWebRequest request = CreateWebRequest(url, WebMethod.GET, nonce, timestamp, signature);
+            return GetWebResponse(request);
+        }
         /// &lt;summary&gt;
         /// Creates http get web request and returns response
         /// &lt;/summary&gt;
@@ -27,6 +34,23 @@ namespace Yammer
             return GetWebResponse(request);
         }
 
+        public static string Get(string url, Session session, NameValueCollection parameters)
+        {
+            string nonce, timestamp;
+            string fullUrl = EncodeUrl(url, parameters);
+            string signature = GetSignature(WebMethod.GET, session, fullUrl, out timestamp, out nonce);
+            HttpWebRequest request = CreateWebRequest(fullUrl, WebMethod.GET, nonce, timestamp, signature, session);
+            return GetWebResponse(request);
+        }
+        public static string Get(string url, NameValueCollection parameters)
+        {
+            string nonce, timestamp;
+            string fullUrl = EncodeUrl(url, parameters);
+            string signature = GetSignature(WebMethod.GET, fullUrl, out timestamp, out nonce);
+            HttpWebRequest request = CreateWebRequest(fullUrl, WebMethod.GET, nonce, timestamp, signature);
+            return GetWebResponse(request);
+        }
+
         /// &lt;summary&gt;
         /// Creates http post web request and returns response
         /// &lt;/summary&gt;
@@ -41,9 +65,44 @@ namespace Yammer
             string signature = GetSignature(WebMethod.POST, session, fullUrl, out timestamp, out nonce);
             HttpWebRequest request = CreateWebRequest(url, WebMethod.POST, nonce, timestamp, signature, session);
             WritePostData(parameters, request);
+            return GetLocationHeader(request);
+        }
+
+        public static string Post(string url, NameValueCollection parameters)
+        {
+            string nonce, timestamp;
+            string fullUrl = EncodeUrl(url, parameters);
+            string signature = GetSignature(WebMethod.POST, fullUrl, out timestamp, out nonce);
+            HttpWebRequest request = CreateWebRequest(url, WebMethod.POST, nonce, timestamp, signature);
+            WritePostData(parameters, request);
+            return GetLocationHeader(request);
+        }
+
+
+        public static string Put(string url, NameValueCollection parameters, Session session)
+        {
+            string nonce, timestamp;
+            string fullUrl = EncodeUrl(url, parameters);
+            string signature = GetSignature(WebMethod.PUT, session, fullUrl, out timestamp, out nonce);
+            HttpWebRequest request = CreateWebRequest(fullUrl, WebMethod.PUT, new string[] { nonce, timestamp, signature }, session);
+            
+            
+            WritePostData(parameters, request);            
             return GetWebResponse(request);
         }
 
+        public static string Put(string url, NameValueCollection parameters)
+        {
+            string nonce, timestamp;
+            string fullUrl = EncodeUrl(url, parameters);
+            string signature = GetSignature(WebMethod.PUT, fullUrl, out timestamp, out nonce);
+            HttpWebRequest request = CreateWebRequest(fullUrl, WebMethod.PUT, new string[] { nonce, timestamp, signature });
+
+
+            WritePostData(parameters, request);
+            return GetWebResponse(request);
+        }
+      
         /// &lt;summary&gt;
         /// Creates http multipart post web request and returns response
         /// &lt;/summary&gt;
@@ -70,6 +129,11 @@ namespace Yammer
             return UploadAttachments(url, parameters, files, session);
         }
 
+        public static string Upload(string url, NameValueCollection parameters, List&lt;string&gt; files)
+        {
+            return UploadAttachments(url, parameters, files);
+        }
+
         /// &lt;summary&gt;
         /// Creates http delete web request and returns response
         /// &lt;/summary&gt;
@@ -84,6 +148,41 @@ namespace Yammer
             return GetWebResponse(request);
 
         }
+        public static string Delete(string url)
+        {
+            string nonce, timestamp;
+            string signature = GetSignature(WebMethod.DELETE, url, out timestamp, out nonce);
+            HttpWebRequest request = CreateWebRequest(url, WebMethod.DELETE, nonce, timestamp, signature);
+            return GetWebResponse(request);
+
+        }
+
+        /// &lt;summary&gt;
+        /// Creates http delete web request and returns response
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;url&quot;&gt;The URL for the web request&lt;/param&gt;
+        /// &lt;param name=&quot;session&quot;&gt;The Yammer&lt;see cref=&quot;Session&quot;&gt;session&lt;/see&gt; object&lt;/param&gt;
+        /// &lt;returns&gt;http response&lt;/returns&gt;
+        public static string Delete(string url, NameValueCollection parameters, Session session)
+        {
+            string nonce, timestamp;
+            string fullUrl = EncodeUrl(url, parameters);
+            string signature = GetSignature(WebMethod.DELETE, session, fullUrl, out timestamp, out nonce);
+            HttpWebRequest request = CreateWebRequest(fullUrl, WebMethod.DELETE, nonce, timestamp, signature, session);
+            WritePostData(parameters, request); 
+            return GetWebResponse(request);
+
+        }
+        public static string Delete(string url, NameValueCollection parameters)
+        {
+            string nonce, timestamp;
+            string fullUrl = EncodeUrl(url, parameters);
+            string signature = GetSignature(WebMethod.DELETE, fullUrl, out timestamp, out nonce);
+            HttpWebRequest request = CreateWebRequest(fullUrl, WebMethod.DELETE, nonce, timestamp, signature);
+            WritePostData(parameters, request);
+            return GetWebResponse(request);
+
+        }
 
         /// &lt;summary&gt;
         /// Creates the OAuth header for the http request
@@ -99,18 +198,49 @@ namespace Yammer
             StringBuilder sb = new StringBuilder();
             sb.Append(&quot;OAuth &quot;);
             if (method == WebMethod.POST)
-                sb.Append(&quot;realm=\&quot;&quot; + Resources.YAMMER_MESSAGES_CREATE + &quot;\&quot;,&quot;);
-
+                sb.Append(&quot;realm=\&quot;&quot;  + &quot;\&quot;,&quot;);
+            else
+                sb.Append(&quot;realm=\&quot;\&quot;,&quot;);
+           
             string authHeader = &quot;oauth_consumer_key=\&quot;&quot; + session.AuthKey.ConsumerKey + &quot;\&quot;,&quot; +
                                 &quot;oauth_token=\&quot;&quot; + session.AuthKey.TokenKey + &quot;\&quot;,&quot; +
                                 &quot;oauth_nonce=\&quot;&quot; + nonce + &quot;\&quot;,&quot; +
                                 &quot;oauth_timestamp=\&quot;&quot; + timeStamp + &quot;\&quot;,&quot; +
-                                &quot;oauth_signature_method=\&quot;&quot; + &quot;HMAC-SHA1&quot; + &quot;\&quot;,&quot; +
+                                &quot;oauth_signature_method=\&quot;&quot; + &quot;PLAINTEXT&quot; + &quot;\&quot;,&quot; +
+                                &quot;oauth_version=\&quot;&quot; + &quot;1.0&quot; + &quot;\&quot;,&quot; +
+                                &quot;oauth_signature=\&quot;&quot; + sig + &quot;\&quot;&quot;;
+
+           
+            sb.Append(authHeader);
+            return sb.ToString();
+
+            //Authorization: OAuth realm=&quot;&quot;, oauth_consumer_key=&quot;AMbmZSOP3wHm1cjfvSsRg&quot;, oauth_signature_method=&quot;HMAC-SHA1&quot;, oauth_signature=&quot;yLDH5eLS4uUVa3vVbNxvDX9B8aFgnwRSFla3jph9y90%26&quot;, oauth_timestamp=&quot;1229537444&quot;, oauth_nonce=&quot;1229537444&quot;, oauth_version=&quot;1.0&quot;
+
+        }
+
+        private static string CreateAuthHeader(WebMethod method, string nonce, string timeStamp, string sig)
+        {
+            StringBuilder sb = new StringBuilder();
+            sb.Append(&quot;OAuth &quot;);
+            if (method == WebMethod.POST)
+                sb.Append(&quot;realm=\&quot;&quot; + &quot;\&quot;,&quot;);
+            else
+                sb.Append(&quot;realm=\&quot;\&quot;,&quot;);
+
+            string authHeader = &quot;oauth_consumer_key=\&quot;&quot; + Yammer.Session.Auth.Key.ConsumerKey + &quot;\&quot;,&quot; +
+                                &quot;oauth_token=\&quot;&quot; + Yammer.Session.Auth.Key.TokenKey + &quot;\&quot;,&quot; +
+                                &quot;oauth_nonce=\&quot;&quot; + nonce + &quot;\&quot;,&quot; +
+                                &quot;oauth_timestamp=\&quot;&quot; + timeStamp + &quot;\&quot;,&quot; +
+                                &quot;oauth_signature_method=\&quot;&quot; + &quot;PLAINTEXT&quot; + &quot;\&quot;,&quot; +
                                 &quot;oauth_version=\&quot;&quot; + &quot;1.0&quot; + &quot;\&quot;,&quot; +
                                 &quot;oauth_signature=\&quot;&quot; + sig + &quot;\&quot;&quot;;
 
+
             sb.Append(authHeader);
             return sb.ToString();
+
+            //Authorization: OAuth realm=&quot;&quot;, oauth_consumer_key=&quot;AMbmZSOP3wHm1cjfvSsRg&quot;, oauth_signature_method=&quot;HMAC-SHA1&quot;, oauth_signature=&quot;yLDH5eLS4uUVa3vVbNxvDX9B8aFgnwRSFla3jph9y90%26&quot;, oauth_timestamp=&quot;1229537444&quot;, oauth_nonce=&quot;1229537444&quot;, oauth_version=&quot;1.0&quot;
+
         }
 
         /// &lt;summary&gt;
@@ -149,10 +279,57 @@ namespace Yammer
             string authHeader = CreateAuthHeader(method, nonce, timeStamp, sig, session);
             request.ContentType = &quot;application/x-www-form-urlencoded&quot;;
             request.Headers.Add(&quot;Authorization&quot;, authHeader);
+            
+            return request;
+        }
+        private static HttpWebRequest CreateWebRequest(string fullUrl, WebMethod method, string nonce, string timeStamp, string sig)
+        {
+            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fullUrl);
+            request.Method = method.ToString();
+            request.Proxy = Yammer.Session.WebProxy;
+            string authHeader = CreateAuthHeader(method, nonce, timeStamp, sig);
+            request.ContentType = &quot;application/x-www-form-urlencoded&quot;;
+            request.Headers.Add(&quot;Authorization&quot;, authHeader);
 
             return request;
         }
 
+        private static HttpWebRequest CreateWebRequest(string fullUrl, WebMethod method, string[] oauthParams, Session session)
+        {
+            string nonce, timeStamp, sig;
+            nonce = oauthParams[0];
+            timeStamp = oauthParams[1];
+            sig = oauthParams[2];
+            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fullUrl);
+            request.ServicePoint.Expect100Continue = false;
+            request.KeepAlive = false;
+            request.ProtocolVersion = HttpVersion.Version10;
+            request.Method = method.ToString();
+            request.Proxy = session.Proxy;
+            string authHeader = CreateAuthHeader(method, nonce, timeStamp, sig, session);
+            request.ContentType = &quot;text/plain&quot;;
+            request.Headers.Add(&quot;Authorization&quot;, authHeader);
+
+            return request;
+        }
+        private static HttpWebRequest CreateWebRequest(string fullUrl, WebMethod method, string[] oauthParams)
+        {
+            string nonce, timeStamp, sig;
+            nonce = oauthParams[0];
+            timeStamp = oauthParams[1];
+            sig = oauthParams[2];
+            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fullUrl);
+            request.ServicePoint.Expect100Continue = false;
+            request.KeepAlive = false;
+            request.ProtocolVersion = HttpVersion.Version10;
+            request.Method = method.ToString();
+            request.Proxy = Yammer.Session.WebProxy;
+            string authHeader = CreateAuthHeader(method, nonce, timeStamp, sig);
+            request.ContentType = &quot;text/plain&quot;;
+            request.Headers.Add(&quot;Authorization&quot;, authHeader);
+
+            return request;
+        }
         /// &lt;summary&gt;
         /// 
         /// &lt;/summary&gt;
@@ -174,6 +351,16 @@ namespace Yammer
             request.Headers.Add(&quot;Authorization&quot;, authHeader);
             return request;
         }
+        public static HttpWebRequest CreateWebRequest(string fullUrl, WebMethod method, string nonce, string timeStamp, string sig, string boundary)
+        {
+            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fullUrl);
+            request.Method = method.ToString();
+            request.Proxy = Yammer.Session.WebProxy;
+            string authHeader = CreateAuthHeader(method, nonce, timeStamp, sig);
+            request.ContentType = &quot;multipart/form-data; boundary=&quot; + boundary;
+            request.Headers.Add(&quot;Authorization&quot;, authHeader);
+            return request;
+        }
 
         /// &lt;summary&gt;
         /// Encodes URL to RFC 3986
@@ -188,14 +375,29 @@ namespace Yammer
             foreach (string key in parameters.Keys)
             {
                 if (count == 0)
-                    fullUrl = url + &quot;?&quot; + key + &quot;=&quot; + Rfc3986.Encode(parameters[key]);
+                    fullUrl = url + &quot;?&quot; + key + &quot;=&quot; + Rfc3986.Encode(parameters[key].ToLower());
                 else
-                    fullUrl += &quot;&amp;&quot; + key + &quot;=&quot; + Rfc3986.Encode(parameters[key]);
+                    fullUrl += &quot;&amp;&quot; + key + &quot;=&quot; + Rfc3986.Encode(parameters[key].ToLower());
                 count++;
             }
             return fullUrl;
         }
 
+        private static string PutParams(NameValueCollection parameters)
+        {
+            string qs = string.Empty;
+            int count = 0;
+            foreach (string key in parameters.Keys)
+            {
+                if (count == 0)
+                    qs = key + &quot;=&quot; + Rfc3986.Encode(parameters[key].ToLower());
+                else
+                    qs += &quot;,&quot; + key + &quot;=&quot; + Rfc3986.Encode(parameters[key].ToLower());
+                count++;
+            }
+            return qs;
+        }
+
         private static string GenerateRandomString(int intLenghtOfString)
         {
             StringBuilder randomString = new StringBuilder();
@@ -235,7 +437,28 @@ namespace Yammer
                 method.ToString(),
                 timestamp,
                 nonce,
-                OAuthBase.SignatureTypes.HMACSHA1, out nurl, out nrp);
+                OAuthBase.SignatureTypes.PLAINTEXT, out nurl, out nrp);
+
+            return System.Web.HttpUtility.UrlEncode(sig);
+        }
+        public static string GetSignature(WebMethod method, string url, out string timestamp, out string nonce)
+        {
+            OAuthBase oAuth = new OAuthBase();
+            nonce = oAuth.GenerateNonce();
+            timestamp = oAuth.GenerateTimeStamp();
+            string nurl, nrp;
+
+            Uri uri = new Uri(url);
+            string sig = oAuth.GenerateSignature(
+                uri,
+                Yammer.Session.Auth.Key.ConsumerKey,
+                Yammer.Session.Auth.Key.ConsumerSecret,
+                Yammer.Session.Auth.Key.TokenKey,
+                Yammer.Session.Auth.Key.TokenSecret,
+                method.ToString(),
+                timestamp,
+                nonce,
+                OAuthBase.SignatureTypes.PLAINTEXT, out nurl, out nrp);
 
             return System.Web.HttpUtility.UrlEncode(sig);
         }
@@ -254,10 +477,43 @@ namespace Yammer
                 response = request.GetResponse();
                 using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                     data = reader.ReadToEnd();
+
+            } 
+            catch (System.Net.WebException ex)
+            {
+                if (ex.Status != WebExceptionStatus.ConnectionClosed &amp;&amp; ex.Status != WebExceptionStatus.KeepAliveFailure)
+                    throw ex;
+                else
+                    System.Threading.Thread.Sleep(500);
+            }
+            catch (Exception ex)
+            {
+                //System.Windows.Forms.MessageBox.Show(&quot;Error retrieving web response &quot; + ex.Message);
+                throw ex;
+            }
+            finally
+            {
+                if (response != null)
+                    response.Close();
+            }
+
+            return data;
+
+
+        }
+
+        public static string GetLocationHeader(HttpWebRequest request)
+        {
+            WebResponse response = null;
+            string data = string.Empty;
+            try
+            {
+                response = request.GetResponse();
+                data = response.Headers[&quot;Location&quot;];
             }
             catch (Exception ex)
             {
-                System.Windows.Forms.MessageBox.Show(&quot;Error retrieving web response &quot; + ex.Message);
+                //System.Windows.Forms.MessageBox.Show(&quot;Error retrieving web response &quot; + ex.Message);
                 throw ex;
             }
             finally
@@ -276,7 +532,7 @@ namespace Yammer
         /// &lt;/summary&gt;
         /// &lt;param name=&quot;parameters&quot;&gt;The query string parameters&lt;/param&gt;
         /// &lt;param name=&quot;request&quot;&gt;The http request to write to&lt;/param&gt;
-        private static void WritePostData(NameValueCollection parameters, HttpWebRequest request)
+        public static void WritePostData(NameValueCollection parameters, HttpWebRequest request)
         {
             int count = 0;
             string queryString = string.Empty;
@@ -289,6 +545,7 @@ namespace Yammer
                 count++;
             }
 
+            
             byte[] postDataBytes = Encoding.ASCII.GetBytes(queryString);
             request.ContentLength = postDataBytes.Length;
             Stream reqStream = request.GetRequestStream();
@@ -344,7 +601,50 @@ namespace Yammer
             }
             WritePostData(contentTrailer,io, true);
 
-            string response = GetWebResponse(request);
+            string response = GetLocationHeader(request);
+            io.Close();
+            request = null;
+
+            return response;
+        }
+
+        private static string UploadAttachments(string url, NameValueCollection parameters, List&lt;string&gt; fileNames)
+        {
+            string nonce, timestamp;
+            string beginBoundary = GenerateRandomString(25);
+            string contentBoundary = &quot;--&quot; + beginBoundary;
+            string endBoundary = contentBoundary + &quot;--&quot;;
+            string contentTrailer = &quot;\r\n&quot; + endBoundary;
+
+            string signature = HttpUtility.GetSignature(WebMethod.POST, url, out timestamp, out nonce);
+            HttpWebRequest request = HttpUtility.CreateWebRequest(url, WebMethod.POST, nonce, timestamp, signature, beginBoundary);
+            Version protocolVersion = HttpVersion.Version11;
+            string method = WebMethod.POST.ToString();
+            string contentType = &quot;multipart/form-data; boundary=&quot; + beginBoundary;
+            string contentDisposition = &quot;Content-Disposition: form-data; name=&quot;;
+            request.Headers.Add(&quot;Cache-Control&quot;, &quot;no-cache&quot;);
+            request.KeepAlive = true;
+            string postParams = GetPostParameters(parameters, contentBoundary, contentDisposition);
+
+            FileInfo[] fi = new FileInfo[fileNames.Count];
+            int i = 0;
+            long postDataSize = 0;
+            int headerLength = 0;
+            List&lt;string&gt; fileHeaders = new List&lt;string&gt;();
+            AddFileHeaders(fileNames, contentBoundary, contentDisposition, fi, ref i, ref postDataSize, ref headerLength, fileHeaders);
+            request.ContentLength = postParams.Length + headerLength + contentTrailer.Length + postDataSize;
+            System.IO.Stream io = request.GetRequestStream();
+            WritePostData(postParams, io, false);
+            i = 0;
+            foreach (string fileName in fileNames)
+            {
+                WritePostData(fileHeaders[i], io, false);
+                WriteFile(io, fileName);
+                i++;
+            }
+            WritePostData(contentTrailer, io, true);
+
+            string response = GetLocationHeader(request);
             io.Close();
             request = null;
 
@@ -427,6 +727,8 @@ namespace Yammer
     
 
     }
+
+     
  
 
 </diff>
      <filename>Yammer Framework/Yammer/HttpUtility.cs</filename>
    </modified>
    <modified>
      <diff>@@ -19,9 +19,6 @@ namespace Yammer
         [XmlElement(ElementName = &quot;thumbnail-url&quot;)]
         public string ThumbnailUrl { get; set; }
 
-       // &lt;image&gt;
-       //  &lt;size&gt;37235&lt;/size&gt;
-       //  &lt;url&gt;https://www.yammer.com/api/v1/images/1301&lt;/url&gt;          		 &lt;thumbnail-url&gt;https://www.yammer.com/api/v1/images/1301/small&lt;/thumbnail-url&gt; 
-       //&lt;/image&gt;
+       
     }
 }</diff>
      <filename>Yammer Framework/Yammer/Image.cs</filename>
    </modified>
    <modified>
      <diff>@@ -5,6 +5,9 @@ using System.Text;
 using System.Runtime.Serialization;
 using System.Xml.Serialization;
 using System.Collections;
+using System.Collections.Specialized;
+using System.Xml;
+using System.IO;
 
 namespace Yammer
 {
@@ -16,6 +19,699 @@ namespace Yammer
         {
         }
 
+        #region All Messages
+
+        /// &lt;summary&gt;
+        /// All messages in this network. Corresponds to the &quot;All&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetAllMessages()
+        {
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_ALL));
+        }
+
+        /// &lt;summary&gt;
+        /// All messages in this network. Corresponds to the &quot;All&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;threaded&quot;&gt;Return only the first message in each thread.&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetAllMessages(bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_ALL, parameters));
+        }
+
+        /// &lt;summary&gt;
+        /// Corresponds to the &quot;All&quot; tab on the website. 
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;newer_than&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetAllMessages(PageFlag flag, int id)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            AddPageFlagParam(flag, parameters, id);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_ALL, parameters));
+        }
+
+        /// &lt;summary&gt;
+        /// Corresponds to the &quot;All&quot; tab on the website. 
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;newer_than&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;threaded&quot;&gt;Return only the first message in each thread.&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetAllMessages(PageFlag flag, int id, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            AddPageFlagParam(flag, parameters, id);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_ALL, parameters));
+
+        }
+
+        #endregion
+
+        #region Sent Messages
+
+        /// &lt;summary&gt;
+        /// Corresponds to the &quot;Sent&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetSentMessages()
+        {
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_SENT));
+        }
+
+        /// &lt;summary&gt;
+        /// Corresponds to the &quot;Sent&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;threaded&quot;&gt;Return only the first message in each thread.&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetSentMessages(bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_SENT, parameters));
+        }
+
+        /// &lt;summary&gt;
+        /// Corresponds to the &quot;Sent&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;threaded&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetSentMessages(PageFlag flag, int id)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            AddPageFlagParam(flag, parameters, id);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_SENT, parameters));
+            
+        }
+
+        /// &lt;summary&gt;
+        /// Corresponds to the &quot;Sent&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;threaded&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetSentMessages(PageFlag flag, int id, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            AddPageFlagParam(flag, parameters, id);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_SENT, parameters));
+          
+        }
+
+        #endregion
+
+        #region Received Messages
+
+        /// &lt;summary&gt;
+        /// Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetReceivedMessages()
+        {
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_RECEIVED));
+        }
+
+        /// &lt;summary&gt;
+        /// Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetReceivedMessages(bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_RECEIVED, parameters));
+        }
+
+        /// &lt;summary&gt;
+        /// Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;thread&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetReceivedMessages(PageFlag flag, int id)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            AddPageFlagParam(flag, parameters, id);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_RECEIVED, parameters));
+
+        }
+
+        /// &lt;summary&gt;
+        /// Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;thread&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetReceivedMessages(PageFlag flag, int id, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            AddPageFlagParam(flag, parameters, id);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_RECEIVED,parameters));
+
+        }
+
+        #endregion
+
+        #region Following Messages
+
+        /// &lt;summary&gt;
+        /// Messages followed by the logged-in user. Corresponds to the &quot;Following&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetFollowingMessages()
+        {
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_FOLLOWING)); ;
+        }
+
+        /// &lt;summary&gt;
+        /// Messages followed by the logged-in user. Corresponds to the &quot;Following&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetFollowingMessages(bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_FOLLOWING, parameters)); ;
+        }
+
+        /// &lt;summary&gt;
+        /// Messages followed by the logged-in user. Corresponds to the &quot;Following&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;date&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetFollowingMessages(PageFlag flag, int id)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            AddPageFlagParam(flag, parameters, id);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_FOLLOWING, parameters));
+
+        }
+
+        /// &lt;summary&gt;
+        /// Messages followed by the logged-in user. Corresponds to the &quot;Following&quot; tab on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;date&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetFollowingMessages(PageFlag flag, int id, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            AddPageFlagParam(flag, parameters, id);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_FOLLOWING, parameters));
+
+        }
+
+        #endregion
+
+        #region Messages Sent By
+
+        /// &lt;summary&gt;
+        /// Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesSentBy(int id)
+        {
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_SENT_BY + id.ToString() + &quot;.xml&quot;));
+        }
+
+        /// &lt;summary&gt;
+        /// Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesSentBy(int id, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_SENT_BY + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+        /// &lt;summary&gt;
+        /// Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesSentBy(PageFlag flag, int id, int pageId)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            AddPageFlagParam(flag, parameters, pageId);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_SENT_BY + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+        /// &lt;summary&gt;
+        /// Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesSentBy(PageFlag flag, int id, int pageId, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            AddPageFlagParam(flag, parameters, pageId);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_SENT_BY + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+        #endregion
+
+        #region Messages Tagged With
+
+        /// &lt;summary&gt;
+        /// Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesTaggedWith(int id)
+        {
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_TAGGED_WITH + id.ToString() + &quot;.xml&quot;));
+        }
+
+        /// &lt;summary&gt;
+        /// Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesTaggedWith(int id, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_TAGGED_WITH + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+        /// &lt;summary&gt;
+        /// Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesTaggedWith(PageFlag flag, int id, int pageId)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            AddPageFlagParam(flag, parameters, pageId);
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_TAGGED_WITH + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+        /// &lt;summary&gt;
+        /// Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesTaggedWith(PageFlag flag, int id, int pageId, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            AddPageFlagParam(flag, parameters, pageId);
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_TAGGED_WITH + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+
+        #endregion
+
+        #region Messages in Group
+
+        /// &lt;summary&gt;
+        /// Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesInGroup(int id)
+        {
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_IN_GROUP + id.ToString() + &quot;.xml&quot;));
+        }
+
+        /// &lt;summary&gt;
+        /// Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesInGroup(int id, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_IN_GROUP + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+        /// &lt;summary&gt;
+        /// Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesInGroup(PageFlag flag, int id, int pageId)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            AddPageFlagParam(flag, parameters, pageId);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_IN_GROUP + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+
+        /// &lt;summary&gt;
+        /// Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesInGroup(PageFlag flag, int id, int pageId, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            AddPageFlagParam(flag, parameters, pageId);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_IN_GROUP + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+
+        #endregion
+
+        #region Messages Favorites Of
+
+        /// &lt;summary&gt;
+        /// Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesFavoritesOf(int id)
+        {
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_FAVORITES_OF + id.ToString() + &quot;.xml&quot;));
+        }
+
+        /// &lt;summary&gt;
+        /// Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesFavoritesOf(int id, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_FAVORITES_OF + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+        /// &lt;summary&gt;
+        /// Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesFavoritesOf(PageFlag flag, int id, int pageId)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            AddPageFlagParam(flag, parameters, pageId);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_FAVORITES_OF + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+        /// &lt;summary&gt;
+        /// Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesFavoritesOf(PageFlag flag, int id, int pageId, bool threaded)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;threaded&quot;, threaded.ToString());
+            AddPageFlagParam(flag, parameters, pageId);
+
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_FAVORITES_OF + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+
+        #endregion
+
+        #region Messages In Thread
+
+        /// &lt;summary&gt;
+        /// Messages in the thread with the given ID. Corresponds to the page you'd see when clicking on &quot;in reply to&quot; on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesInThread(int id)
+        {
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_IN_THREAD + id.ToString() + &quot;.xml&quot;));
+        }
+
+        /// &lt;summary&gt;
+        /// Messages in the thread with the given ID. Corresponds to the page you'd see when clicking on &quot;in reply to&quot; on the website.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;Message&gt; GetMessagesInThread(PageFlag flag, int id, int pageId)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            AddPageFlagParam(flag, parameters, pageId);
+            return RetrieveMessages(Yammer.HttpUtility.Get(Resources.YAMMER_MESSAGES_IN_THREAD + id.ToString() + &quot;.xml&quot;, parameters));
+        }
+
+        #endregion
+
+        #region Post Message
+
+        /// &lt;summary&gt;
+        /// Create a new message.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;body&quot;&gt;&lt;/param&gt;
+        public static string PostMessage(string body, List&lt;string&gt; attachments)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;body&quot;, body);
+            string response = string.Empty;
+            if (attachments.Count &gt; 0)
+                response = Yammer.HttpUtility.Upload(Resources.YAMMER_MESSAGES_CREATE, parameters, attachments);
+            else
+                response = Yammer.HttpUtility.Post(Resources.YAMMER_MESSAGES_CREATE, parameters);
+
+            return response;
+        }
+
+        /// &lt;summary&gt;
+        /// Sends message in reply to message of given id
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;body&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;reply&quot;&gt;&lt;/param&gt;
+        public static string PostMessage(string body, int id, List&lt;string&gt; attachments)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;body&quot;, body);
+            parameters.Add(&quot;replied_to_id&quot;, id.ToString());
+            string response = string.Empty;
+            if (attachments.Count &gt; 0)
+                response = Yammer.HttpUtility.Upload(Resources.YAMMER_MESSAGES_CREATE, parameters, attachments);
+            else
+                response = Yammer.HttpUtility.Post(Resources.YAMMER_MESSAGES_CREATE, parameters);
+
+            return response;
+        }
+
+
+        /// &lt;summary&gt;
+        /// Sends a private message directly to the user indicated.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;directToId&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;body&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;attachments&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static string PostMessage(int directToId, string body, List&lt;string&gt; attachments)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;body&quot;, body);
+            parameters.Add(&quot;direct_to_id&quot;, directToId.ToString());
+            string response = string.Empty;
+            if (attachments.Count &gt; 0)
+                response = Yammer.HttpUtility.Upload(Resources.YAMMER_MESSAGES_CREATE, parameters, attachments);
+            else
+                response = Yammer.HttpUtility.Post(Resources.YAMMER_MESSAGES_CREATE, parameters);
+
+            return response;
+        }
+
+        
+
+
+        #endregion
+
+        #region Delete Message
+
+        /// &lt;summary&gt;
+        /// Delete a message owned by the current user.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        public static void DeleteMessage(int id)
+        {
+            Yammer.HttpUtility.Delete(Resources.YAMMER_MESSAGES_DELETE + id.ToString());
+        }
+
+        #endregion
+
+        #region Helper Methods
+
+        private static object Deserialize(Type type, string xml)
+        {
+
+            XmlSerializer serializer = new XmlSerializer(type);
+            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
+            byte[] bytes = encoding.GetBytes(xml);
+            System.IO.MemoryStream stream = new MemoryStream(bytes);
+            object obj = (object)serializer.Deserialize(stream);
+
+            return obj;
+
+        }
+
+        private static void AddPageFlagParam(PageFlag pf, NameValueCollection parameters, int id)
+        {
+            if (pf == PageFlag.NEWER_THAN)
+                parameters.Add(&quot;newer_than&quot;, id.ToString());
+            else
+                parameters.Add(&quot;older_than&quot;, id.ToString());
+        }
+
+        private static void SetMessageReference(Message message, Message reference)
+        {
+            if (message != null)
+                message.References.Messages.Add(reference);
+
+        }
+
+        private static void SetMessageReference(Message message, Guide reference)
+        {
+            if (message != null)
+                message.References.Guide = reference;
+        }
+
+        private static void AddMessageReferences(List&lt;Message&gt; messages, object reference)
+        {
+            if (messages != null)
+            {
+                User user;
+                Tag tag;
+                Thread thread;
+                foreach (Message msg in messages)
+                {
+                    switch (ConvertReferenceType(reference, out user, out tag, out thread))
+                    {
+                        case ObjectType.USER:
+                            msg.References.Users.Add(user);
+                            break;
+                        case ObjectType.THREAD:
+                            msg.References.Thread = thread;
+                            break;
+                        case ObjectType.TAG:
+                            msg.References.Tags.Add(tag);
+                            break;
+                    }
+                }
+            }
+
+        }
+
+        private static ObjectType ConvertReferenceType(object reference, out User user, out Tag tag, out Thread thread)
+        {
+            user = null;
+            tag = null;
+            thread = null;
+            user = reference as User;
+            ObjectType type = ObjectType.NONE;
+            bool converted = false;
+            if (user != null) { converted = true; type = ObjectType.USER; }
+            if (!converted)
+            {
+                thread = reference as Thread;
+                if (thread != null) { converted = true; type = ObjectType.THREAD; }
+                if (!converted)
+                {
+                    tag = reference as Tag;
+                    if (tag != null) { converted = true; type = ObjectType.TAG; }
+                }
+            }
+
+            return type;
+        }
+
+        private static List&lt;Message&gt; RetrieveMessages(string data)
+        {
+            List&lt;Message&gt; messages = null;
+            try
+            {
+                XmlDocument xdoc = new XmlDocument();
+                xdoc.LoadXml(data);
+                messages = new List&lt;Message&gt;();
+                ReadMessages(messages, xdoc);
+                ReadReferences(messages, xdoc);
+            }
+            catch (Exception ex)
+            {
+                System.Windows.Forms.MessageBox.Show(&quot;Deserialization Error: &quot; + ex.Message.ToString());
+            }
+
+            return messages;
+        }
+
+        private static void ReadReferences(List&lt;Message&gt; messages, XmlDocument xdoc)
+        {
+            foreach (XmlNode node in xdoc.SelectNodes(&quot;/response/references/reference&quot;))
+            {
+                string xml = node.OuterXml;
+                ObjectType objectType = (ObjectType)Enum.Parse(Type.GetType(&quot;Yammer.ObjectType&quot;), node.SelectSingleNode(&quot;type&quot;).InnerText.ToUpper());
+                switch (objectType)
+                {
+                    case ObjectType.MESSAGE:
+                        Message message = (Message)Deserialize(typeof(Message), &quot;&lt;message&gt;&quot; + node.InnerXml + &quot;&lt;/message&gt;&quot;);
+                        SetMessageReference(messages.Find(delegate(Message m) { return m.RepliedToId == message.Id; }), message);
+                        break;
+                    case ObjectType.USER:
+                        User user = (User)Deserialize(typeof(User), node.OuterXml);
+                        AddMessageReferences(messages.FindAll(delegate(Message m) { return m.SenderId.ToString() == user.Id || m.RepliedToId == user.Id; }), user);
+                        break;
+                    case ObjectType.TAG:
+                        Tag tag = (Tag)Deserialize(typeof(Tag), node.OuterXml);
+                        string tagText = &quot;[[tag:&quot; + tag.Id + &quot;]] tag&quot;;
+                        AddMessageReferences(messages.FindAll(delegate(Message m) { return m.Body.Parsed.Contains(tagText); }), tag);
+                        break;
+                    case ObjectType.THREAD:
+                        Thread thread = (Thread)Deserialize(typeof(Thread), node.OuterXml);
+                        AddMessageReferences(messages.FindAll(delegate(Message m) { return m.ThreadId == thread.Id; }), thread);
+                        break;
+                    case ObjectType.GUIDE:
+                        Guide guide = (Guide)Deserialize(typeof(Guide), node.OuterXml);
+                        SetMessageReference(messages.Find(delegate(Message m) { return m.SenderId.ToString() == guide.Id; }), guide);
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+
+        private static void ReadMessages(List&lt;Message&gt; messages, XmlDocument xdoc)
+        {
+            foreach (XmlNode mnode in xdoc.SelectNodes(&quot;/response/messages/message&quot;))
+            {
+                Message message = (Message)Deserialize(typeof(Message), mnode.OuterXml);
+                message.References = new Reference();
+                messages.Add(message);
+            }
+        }
+
+        #endregion
+
         #region Yammer Properties
 
         /// &lt;summary&gt;
@@ -134,6 +830,33 @@ namespace Yammer
 
         public Reference References { get; set; }
 
+        public User Sender
+        {
+            get
+            {
+                return Yammer.User.GetUserById(this.References.Users, this.SenderId);
+            }
+        }
+
+        public Yammer.User Recipient
+        {
+            get
+            {
+                if (this.DirectToId != null)
+                    return Yammer.User.GetUserById(this.References.Users, int.Parse(this.DirectToId));
+                else
+                    return null;
+            }
+        }
+
+        public Guide Guide
+        {
+            get
+            {
+                return this.References.Guide;
+            }
+        }
+
 
         #endregion
     }</diff>
      <filename>Yammer Framework/Yammer/Message.cs</filename>
    </modified>
    <modified>
      <diff>@@ -8,11 +8,13 @@ namespace Yammer
     public static class Resources
     {
 
+        private static string APP_PATH = System.Configuration.ConfigurationSettings.AppSettings[&quot;APP_PATH&quot;];
+        
         #region oAuth
 
-        public static string OAUTH_REQUEST_TOKEN = &quot;https://www.yammer.com/oauth/request_token&quot;;
-        public static string OAUTH_AUTHORIZE = &quot;https://www.yammer.com/oauth/authorize&quot;;
-        public static string OAUTH_ACCESS_TOKEN = &quot;https://www.yammer.com/oauth/access_token&quot;;
+        public static string OAUTH_REQUEST_TOKEN = APP_PATH + &quot;/oauth/request_token&quot;;
+        public static string OAUTH_AUTHORIZE = APP_PATH + &quot;/oauth/authorize&quot;;
+        public static string OAUTH_ACCESS_TOKEN = APP_PATH + &quot;/oauth/access_token&quot;;
 
         #endregion
 
@@ -21,55 +23,55 @@ namespace Yammer
         /// &lt;summary&gt;
         /// All messages in this network. Corresponds to the &quot;All&quot; tab on the website
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_ALL = &quot;https://www.yammer.com/api/v1/messages.xml&quot;;
+        public static string YAMMER_MESSAGES_ALL = APP_PATH + &quot;/api/v1/messages.xml&quot;;
         /// &lt;summary&gt;
         /// Alias for /api/v1/messages/from_user/logged-in_user_id.format Corresponds to the &quot;Sent&quot; tab on the website.
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_SENT = &quot;https://www.yammer.com/api/v1/messages/sent.xml&quot;;
+        public static string YAMMER_MESSAGES_SENT = APP_PATH + &quot;/api/v1/messages/sent.xml&quot;;
         /// &lt;summary&gt;
         /// Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_RECEIVED = &quot;https://www.yammer.com/api/v1/messages/received.xml&quot;;
+        public static string YAMMER_MESSAGES_RECEIVED = APP_PATH + &quot;/api/v1/messages/received.xml&quot;;
         /// &lt;summary&gt;
         /// Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_FOLLOWING = &quot;https://www.yammer.com/api/v1/messages/following.xml&quot;;
+        public static string YAMMER_MESSAGES_FOLLOWING = APP_PATH + &quot;/api/v1/messages/following.xml&quot;;
         /// &lt;summary&gt;
         /// Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_SENT_BY = &quot;https://www.yammer.com/api/v1/messages/from_user/&quot;;
+        public static string YAMMER_MESSAGES_SENT_BY = APP_PATH + &quot;/api/v1/messages/from_user/&quot;;
         /// &lt;summary&gt;
         /// Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_TAGGED_WITH = &quot;https://www.yammer.com/api/v1/messages/tagged_with/&quot;;
+        public static string YAMMER_MESSAGES_TAGGED_WITH = APP_PATH + &quot;/api/v1/messages/tagged_with/&quot;;
         /// &lt;summary&gt;
         /// Messages in the thread with the given ID. Corresponds to the page you'd see when clicking on &quot;in reply to&quot; on the website.
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_IN_THREAD = &quot;https://www.yammer.com/api/v1/messages/in_thread/&quot;;
+        public static string YAMMER_MESSAGES_IN_THREAD = APP_PATH + &quot;/api/v1/messages/in_thread/&quot;;
         /// &lt;summary&gt;
         /// Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_IN_GROUP = &quot;https://www.yammer.com/api/v1/messages/in_group/&quot;;
+        public static string YAMMER_MESSAGES_IN_GROUP = APP_PATH + &quot;/api/v1/messages/in_group/&quot;;
         /// &lt;summary&gt;
         /// Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_FAVORITES_OF = &quot;https://www.yammer.com/api/v1/messages/favorites_of/&quot;;
+        public static string YAMMER_MESSAGES_FAVORITES_OF = APP_PATH + &quot;/api/v1/messages/favorites_of/&quot;;
         /// &lt;summary&gt;
         /// Create a new message.
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_CREATE = &quot;https://www.yammer.com/api/v1/messages/&quot;;
+        public static string YAMMER_MESSAGES_CREATE = APP_PATH + &quot;/api/v1/messages/&quot;;
         /// &lt;summary&gt;
         /// Delete a message owned by the current user.
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_DELETE = &quot;https://www.yammer.com/api/v1/messages/&quot;;
+        public static string YAMMER_MESSAGES_DELETE = APP_PATH + &quot;/api/v1/messages/&quot;;
         /// &lt;summary&gt;
         /// Add a message to user_id's favorite messages.
        /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_ADD_FAVORITE = &quot;https://www.yammer.com/api/v1/favorites_of/&quot;;
+        public static string YAMMER_MESSAGES_ADD_FAVORITE = APP_PATH + &quot;/api/v1/favorites_of/&quot;;
         /// &lt;summary&gt;
         /// Remove a favorite.
         /// &lt;/summary&gt;
-        public static string YAMMER_MESSAGES_DELETE_FAVORITE = &quot;https://www.yammer.com/api/v1/favorites_of/&quot;;
+        public static string YAMMER_MESSAGES_DELETE_FAVORITE = APP_PATH + &quot;/api/v1/favorites_of/&quot;;
 
         #endregion
 
@@ -78,11 +80,9 @@ namespace Yammer
         /// &lt;summary&gt;
         /// A list of groups. 
         /// &lt;/summary&gt;
-        public static string YAMMER_GROUP_LIST = &quot;https://www.yammer.com/api/v1/groups.xml&quot;;
-        /// &lt;summary&gt;
-        /// https://www.yammer.com/api/v1/groups/id.format
-        /// &lt;/summary&gt;
-        public static string YAMMER_GROUP_DATA = &quot;https://www.yammer.com/api/v1/groups/&quot;;
+        public static string YAMMER_GROUP_LIST = APP_PATH + &quot;/api/v1/groups.xml&quot;;
+
+        public static string YAMMER_GROUP_DATA = APP_PATH + &quot;/api/v1/groups/&quot;;
 
         #endregion
 
@@ -91,11 +91,11 @@ namespace Yammer
         /// &lt;summary&gt;
         /// Tags in this network. NOT YET IMPLEMENTED
         /// &lt;/summary&gt;
-        public static string YAMMER_TAGS = &quot;https://www.yammer.com/api/v1/tags.xml&quot;;
+        public static string YAMMER_TAGS = APP_PATH + &quot;/api/v1/tags.xml&quot;;
         /// &lt;summary&gt;
         /// View data about one tag.
         /// &lt;/summary&gt;
-        public static string YAMMER_TAGS_DATA = &quot;https://www.yammer.com/api/v1/tags/&quot;;
+        public static string YAMMER_TAGS_DATA = APP_PATH + &quot;/api/v1/tags/&quot;;
 
         #endregion
 
@@ -104,15 +104,21 @@ namespace Yammer
         /// &lt;summary&gt;
         /// Users in this network.
         /// &lt;/summary&gt;
-        public static string YAMMER_USERS_ALL = &quot;https://www.yammer.com/api/v1/users.xml&quot;;
+        public static string YAMMER_USERS_ALL = APP_PATH + &quot;/api/v1/users.xml&quot;;
         /// &lt;summary&gt;
         /// View data about one user. 	
         /// &lt;/summary&gt;
-        public static string YAMMER_USERS_SINGLE = &quot;https://www.yammer.com/api/v1/users/&quot;;
+        public static string YAMMER_USERS_SINGLE = APP_PATH + &quot;/api/v1/users/&quot;;
         /// &lt;summary&gt;
         /// Alias to /api/v1/users/current user's id.format.
         /// &lt;/summary&gt;
-        public static string YAMMER_USERS_CURRENT = &quot;https://www.yammer.com/api/v1/users/current.xml&quot;;
+        public static string YAMMER_USERS_CURRENT = APP_PATH + &quot;/api/v1/users/current.xml&quot;;
+
+        public static string YAMMER_USERS_CREATE = APP_PATH + &quot;/api/v1/users.xml&quot;;
+
+        public static string YAMMER_USERS_MODIFY = APP_PATH + &quot;/api/v1/users/&quot;;
+
+        public static string YAMMER_USERS_DELETE = APP_PATH + &quot;/api/v1/users/&quot;;
 
         #endregion
 
@@ -121,11 +127,11 @@ namespace Yammer
         /// &lt;summary&gt;
         /// Join a group.
         /// &lt;/summary&gt;
-        public static string YAMMER_GROUP_JOIN = &quot;https://www.yammer.com/api/v1/group_memberships/&quot;;
+        public static string YAMMER_GROUP_JOIN = APP_PATH + &quot;/api/v1/group_memberships/&quot;;
         /// &lt;summary&gt;
         /// Leave a group.
         /// &lt;/summary&gt;
-        public static string YAMMER_GROUP_RESIGN = &quot;https://www.yammer.com/api/v1/group_memberships/&quot;;
+        public static string YAMMER_GROUP_RESIGN = APP_PATH + &quot;/api/v1/group_memberships/&quot;;
          
         #endregion
 
@@ -134,16 +140,16 @@ namespace Yammer
         /// &lt;summary&gt;
         /// Show org chart relationships.
         /// &lt;/summary&gt;
-        public static string YAMMER_RELATIONSHIPS_ALL = &quot;https://www.yammer.com/api/v1/relationships.xml&quot;;
+        public static string YAMMER_RELATIONSHIPS_ALL = APP_PATH + &quot;/api/v1/relationships.xml&quot;;
         /// &lt;summary&gt;
         /// Add an org chart relationship.
         /// &lt;/summary&gt;
-        public static string YAMMER_RELATIONSHIPS_CREATE = &quot;https://www.yammer.com/api/v1/relationships.xml&quot;;
+        public static string YAMMER_RELATIONSHIPS_CREATE = APP_PATH + &quot;/api/v1/relationships.xml&quot;;
         /// &lt;summary&gt;
         /// Remove a relationship.
         /// &lt;/summary&gt;
-        public static string YAMMER_RELATIONSHIPS_DELETE = &quot;https://www.yammer.com/api/v1/relationships/&quot;;
-
+        public static string YAMMER_RELATIONSHIPS_DELETE = APP_PATH + &quot;/api/v1/relationships/&quot;;
+       
         #endregion
 
         #region Suggestions
@@ -151,19 +157,19 @@ namespace Yammer
         /// &lt;summary&gt;
         /// Show suggested groups and users. 
         /// &lt;/summary&gt;
-        public static string YAMMER_SUGGESTIONS_SHOW_ALL = &quot;https://www.yammer.com/api/v1/suggestions.xml&quot;;
+        public static string YAMMER_SUGGESTIONS_SHOW_ALL = APP_PATH + &quot;/api/v1/suggestions.xml&quot;;
         /// &lt;summary&gt;
         /// Show only suggested users. 
         /// &lt;/summary&gt;
-        public static string YAMMER_SUGGESTIONS_SHOW_USERS = &quot;https://www.yammer.com/api/v1/suggestions/users.xml&quot;;
-        /// &lt;summary&gt;
+        public static string YAMMER_SUGGESTIONS_SHOW_USERS = APP_PATH + &quot;/api/v1/suggestions/users.xml&quot;;
+        /// &lt;summary&gt;	                                      
         /// Show only suggested groups. 	
         /// &lt;/summary&gt;
-        public static string YAMMER_SUGGESTIONS_SHOW_GROUPS = &quot;https://www.yammer.com/api/v1/suggestions/groups.xml&quot;;
+        public static string YAMMER_SUGGESTIONS_SHOW_GROUPS = APP_PATH + &quot;/api/v1/suggestions/groups.xml&quot;;
         /// &lt;summary&gt;
         /// Decline a suggestion.
         /// &lt;/summary&gt;
-        public static string YAMMER_SUGGESTIONS_DECLINE = &quot;https://www.yammer.com/api/v1/suggestions/&quot;;
+        public static string YAMMER_SUGGESTIONS_DECLINE = APP_PATH + &quot;/api/v1/suggestions/&quot;;
 
         #endregion
 
@@ -171,19 +177,19 @@ namespace Yammer
         /// &lt;summary&gt;
         /// Check to see if you are subscribed to the user of the given id.
         /// &lt;/summary&gt;
-        public static string YAMMER_SUBSCRIPTIONS_TO_USER = &quot;https://www.yammer.com/api/v1/subscriptions/to_user/&quot;;
+        public static string YAMMER_SUBSCRIPTIONS_TO_USER = APP_PATH + &quot;/api/v1/subscriptions/to_user/&quot;;
         /// &lt;summary&gt;
         /// Check to see if you are subscribed to the tag of the given id. 
         /// &lt;/summary&gt;
-        public static string YAMMER_SUBSCRIPTIONS_TO_TAG = &quot;https://www.yammer.com/api/v1/subscriptions/to_tag/&quot;;
+        public static string YAMMER_SUBSCRIPTIONS_TO_TAG = APP_PATH + &quot;/api/v1/subscriptions/to_tag/&quot;;
         /// &lt;summary&gt;
         /// Subscribe to a user or tag.
         /// &lt;/summary&gt;
-        public static string YAMMER_SUBSCRIPTIONS_SUBSCRIBE = &quot;https://www.yammer.com/api/v1/subscriptions/&quot;;
+        public static string YAMMER_SUBSCRIPTIONS_SUBSCRIBE = APP_PATH + &quot;/api/v1/subscriptions/&quot;;
         /// &lt;summary&gt;
         /// Unsubscribe to a user or tag.
         /// &lt;/summary&gt;
-        public static string YAMMER_SUBSCRIPTIONS_UNSUBSCRIBE = &quot;https://www.yammer.com/api/v1/subscriptions/ &quot;;
+        public static string YAMMER_SUBSCRIPTIONS_UNSUBSCRIBE = APP_PATH + &quot;/api/v1/subscriptions/ &quot;;
 
         #endregion
 
@@ -192,7 +198,7 @@ namespace Yammer
         /// &lt;summary&gt;
         /// Return typeahead suggestions for the prefix passed
         /// &lt;/summary&gt;
-        public static string YAMMER_AUTOCOMPLETE = &quot;https://www.yammer.com/api/v1/autocomplete.xml&quot;;
+        public static string YAMMER_AUTOCOMPLETE = APP_PATH + &quot;/api/v1/autocomplete.xml&quot;;
 
         #endregion
 </diff>
      <filename>Yammer Framework/Yammer/Resources.cs</filename>
    </modified>
    <modified>
      <diff>@@ -5,6 +5,9 @@ using System.Text;
 using System.Web;
 using System.Net;
 using OAuth;
+using System.Threading;
+using System.Windows.Forms;
+using threading = System.Threading;
 namespace Yammer
 {
     public class Session
@@ -12,10 +15,142 @@ namespace Yammer
         public WebProxy Proxy { get; set; }
         public OAuthKey AuthKey { get; set; }
 
+        
         public Session(OAuthKey key, WebProxy proxy)
         {
             this.AuthKey = key;
             this.Proxy = proxy;
+            Session.Assets = new Assets(this);
+        }
+
+        public static Assets Assets { get; set; }
+
+        //New Code************
+
+        static Session()
+        {
+            
+        }
+
+        static void Auth_AuthorizationComplete(object sender, EventArgs e)
+        {
+            OnAuthorizationComplete();
+        }
+        public static  event EventHandler AuthorizationComplete;
+        public static void OnAuthorizationComplete()
+        {
+            if (Session.AuthorizationComplete != null)
+                Session.AuthorizationComplete(null, new EventArgs());
+        }
+
+        public static void Start()
+        {
+            Start(false, null, null, null, null);
+        }
+
+        public static void Start(bool useProxy, string address, string port, string username, string password)
+        {
+            Login(useProxy, address, port, username, password);
+        }
+
+        public static Yammer.Settings Settings { get; set; }
+
+        private static Yammer.Auth auth;
+        public static Yammer.Auth Auth 
+        {
+            get
+            {
+                if (auth == null)
+                    CheckAuth();
+
+                return auth;
+            }
+            set
+            {
+                auth = value;
+                auth.AuthorizationComplete += new EventHandler(Auth_AuthorizationComplete);
+            }
+        }
+
+        public static WebProxy WebProxy { get; set; }
+
+        private static void Login(bool useProxy, string address, string port, string username, string password)
+        {
+            
+            Session.WebProxy = null;
+            bool validProxy;
+
+            if (useProxy)
+                validProxy = ValidateProxySettings(address, port, username, password);
+            else
+                validProxy = true;
+
+
+            if (validProxy)
+            {
+                try
+                {
+                    if (useProxy)
+                    {
+                        Session.WebProxy = new System.Net.WebProxy();
+                        Session.WebProxy.Address = new Uri(address + &quot;:&quot; + port);
+                        Session.WebProxy.Credentials = new NetworkCredential(username, password);
+                    }
+
+                    threading.Thread thread = new threading.Thread(new ThreadStart(GetRequestToken));
+                    thread.Start();
+                }
+                catch (Exception ex)
+                {
+                    Yammer.Utility.SetErrorLog(ex.Message);
+                }
+            }
+            else
+                MessageBox.Show(&quot;If you are using a proxy-server please add values for each setting.&quot;);
+        }
+
+        private static bool ValidateProxySettings(string address, string port, string username, string password)
+        {
+            if (address == null || port == null || username == null || password == null)
+                return false;
+
+            if (address == string.Empty || port == string.Empty || username == string.Empty || password == string.Empty)
+                return false;
+
+            return true;
+        }
+
+        private static void GetRequestToken()
+        {
+            string ck = System.Configuration.ConfigurationSettings.AppSettings[&quot;CONSUMER_KEY&quot;];
+            string cs = System.Configuration.ConfigurationSettings.AppSettings[&quot;CONSUMER_SECRET&quot;];
+            Session.Auth = Yammer.Auth.GetRequestToken(Session.WebProxy, ck, cs);
+            //TODO: Allow callback URL
+            if (Session.Auth != null)
+                Session.Auth.Authorize(null);
+
+            Session.OnReceiveRequestToken();
+        }
+
+        public static event EventHandler ReceiveRequestToken;
+
+        static void OnReceiveRequestToken()
+        {
+            if (Session.ReceiveRequestToken != null)
+                Session.ReceiveRequestToken(null, new EventArgs()); 
+        }
+
+        private static void CheckAuth()
+        {
+            string ck = System.Configuration.ConfigurationSettings.AppSettings[&quot;CONSUMER_KEY&quot;];
+            string cs = System.Configuration.ConfigurationSettings.AppSettings[&quot;CONSUMER_SECRET&quot;];
+            Yammer.Settings settings = Yammer.Settings.CheckConfiguration();
+            if (settings != null)
+            {
+                Yammer.Session.Auth = new Auth();                
+                Yammer.Session.Auth.Key = new OAuthKey(ck, cs, settings.OAuth.TokenKey, settings.OAuth.TokenSecret);
+            }
+
         }
     }
 }</diff>
      <filename>Yammer Framework/Yammer/Session.cs</filename>
    </modified>
    <modified>
      <diff>@@ -23,6 +23,40 @@ namespace Yammer
         public OAuthSettings OAuth { get; set; }
         [XmlElement]
         public string UserId { get; set; }
+        [XmlElement]
+        public string Email { get; set; }
+        [XmlElement]
+        public string Domain { get; set; }
+        private bool showAvatars = true;
+        [XmlElement]
+        public bool ShowAvatars
+        {
+            get
+            {
+                return showAvatars;
+            }
+            set
+            {
+                showAvatars = value;
+            }
+        }
+        [XmlElement]
+        public bool ShowFullNames { get; set; }
+        [XmlElement]
+        public bool SupressEnterKey { get; set; }
+
+        [XmlElement]
+        public bool SmtpUseSSL { get; set; }
+        [XmlElement]
+        public string SmtpHost { get; set; }
+        [XmlElement]
+        public string SmtpPort { get; set; }
+        [XmlElement]
+        public string SmtpUser { get; set; }
+        [XmlElement]
+        public string SmtpPass { get; set; }
+        [XmlElement]
+        public string EmailRecipients { get; set; }
 
         /// &lt;summary&gt;
         /// Checks if the persisted &lt;see cref=&quot;Settings&quot;&gt;settings&lt;/see&gt; file exists on the client
@@ -30,7 +64,7 @@ namespace Yammer
         /// &lt;returns&gt;&lt;/returns&gt;
         public static Settings CheckConfiguration()
         {
-            Dictionary&lt;string, DirectoryInfo&gt; appData = Utility.GetAppDirectory();
+            Dictionary&lt;string, DirectoryInfo&gt; appData = Utility.GetAppData();
             if (System.IO.File.Exists(appData[&quot;data&quot;] + &quot;\\settings.yam&quot;))
             {
                 XmlSerializer serializer = new XmlSerializer(typeof(Settings));
@@ -52,7 +86,7 @@ namespace Yammer
         /// &lt;param name=&quot;tokenSecret&quot;&gt;&lt;/param&gt;
         public static void SaveConfiguration(string tokenKey, string tokenSecret, OAuthKey key, WebProxy proxy)
         {
-            Dictionary&lt;string, DirectoryInfo&gt; appData = Utility.GetAppDirectory();
+            Dictionary&lt;string, DirectoryInfo&gt; appData = Utility.GetAppData();
             Settings settings = new Settings();
             if (proxy != null)
             {</diff>
      <filename>Yammer Framework/Yammer/Settings.cs</filename>
    </modified>
    <modified>
      <diff>@@ -4,6 +4,7 @@ using System.Linq;
 using System.Text;
 using System.Runtime.Serialization;
 using System.Xml.Serialization;
+using System.Collections.Specialized;
 
 namespace Yammer
 {
@@ -38,6 +39,51 @@ namespace Yammer
         [XmlElement(ElementName = &quot;target-url&quot;)]
         public string TargetUrl { get; set; }
 
+       
+        /// &lt;summary&gt;
+        /// Subscribe to user
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        public static void SubscribeToUser(int id)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;target_type&quot;, &quot;user&quot;);
+            parameters.Add(&quot;target_id&quot;, id.ToString());
+            string data = Yammer.HttpUtility.Post(Resources.YAMMER_SUBSCRIPTIONS_SUBSCRIBE, parameters);
+        }
+
+        /// &lt;summary&gt;
+        /// Subscribe to tag
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        public static void SubscribeToTag(int id)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;target_type&quot;, &quot;tag&quot;);
+            parameters.Add(&quot;target_id&quot;, id.ToString());
+            string data = Yammer.HttpUtility.Post(Resources.YAMMER_SUBSCRIPTIONS_SUBSCRIBE, parameters);
+        }
+
+        /// &lt;summary&gt;
+        /// Unsubscribe to user
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+        public static void DeleteSubscriptionToUser(int id)
+        {
+            string data = Yammer.HttpUtility.Delete(Resources.YAMMER_RELATIONSHIPS_DELETE + &quot;?target_type=user&quot; + &quot;&amp;target_id=&quot; + id.ToString());
+        }
+
+        /// &lt;summary&gt;
+        /// Unsubscribe to tag
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+        /// &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+        public static void DeleteSubscriptionToTag(int id, Session session)
+        {
+            string data = Yammer.HttpUtility.Delete(Resources.YAMMER_RELATIONSHIPS_DELETE + &quot;?target_type=tag&quot; + &quot;&amp;target_id=&quot; + id.ToString());
+        }
+ 
 
     }
 }</diff>
      <filename>Yammer Framework/Yammer/Subscription.cs</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,7 @@ namespace Yammer
         /// &lt;/summary&gt;
         [DataMember(Name = &quot;stats&quot;)]
         [XmlElement(ElementName = &quot;stats&quot;)]
-        public UserStats Stats { get; set; }
+        public Stats Stats { get; set; }
 
         /// &lt;summary&gt;
         /// Short text identifier</diff>
      <filename>Yammer Framework/Yammer/Tag.cs</filename>
    </modified>
    <modified>
      <diff>@@ -4,12 +4,17 @@ using System.Linq;
 using System.Text;
 using System.Runtime.Serialization;
 using System.Xml.Serialization;
+using System.Xml;
+using System.Collections.Specialized;
+using System.Reflection;
 namespace Yammer
 {
     [DataContract(Name = &quot;reference&quot;)]
     [XmlRoot(ElementName = &quot;reference&quot;)]
     public class User
     {
+        #region Yammer Properties
+
         /// &lt;summary&gt;
         /// The object type.
         /// &lt;/summary&gt;
@@ -105,7 +110,7 @@ namespace Yammer
         /// &lt;/summary&gt;
         [DataMember(Name = &quot;stats&quot;)]
         [XmlElement(ElementName = &quot;stats&quot;)]
-        public UserStats Stats { get; set; }
+        public Stats Stats { get; set; }
 
         /// &lt;summary&gt;
         /// User location
@@ -115,17 +120,173 @@ namespace Yammer
         public string Location { get; set; }
 
 
+        #endregion
+
+        internal static User GetUser(string data)
+        {
+            XmlDocument xdoc = new XmlDocument();
+            xdoc.LoadXml(data);
+            XmlNode node = xdoc.SelectSingleNode(&quot;/response&quot;);
+            User user = (User)Utility.Deserialize(typeof(User), &quot;&lt;reference&gt;&quot; + node.InnerXml + &quot;&lt;/reference&gt;&quot;);
+            return user;
+        }
+
+        internal static List&lt;User&gt; GetAllUsers(string data)
+        {
+            XmlDocument xdoc = new XmlDocument();
+            xdoc.LoadXml(data);
+            
+            XmlNodeList nodes = xdoc.SelectNodes(&quot;/response/response&quot;);
+            List&lt;User&gt; users = new List&lt;User&gt;();
+            foreach (XmlNode node in nodes)
+            {
+                User user = (User)Utility.Deserialize(typeof(User), &quot;&lt;reference&gt;&quot; + node.InnerXml + &quot;&lt;/reference&gt;&quot;);
+                users.Add(user);
+            }
+            return users;
+        }
+
+        /// &lt;summary&gt;
+        /// Retreives data about current user
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static User GetCurrentUser()
+        {
+            string response = Yammer.HttpUtility.Get(Resources.YAMMER_USERS_CURRENT);
+            return User.GetUser(response);
+        }
+
+        /// &lt;summary&gt;
+        /// Retrieves list of users in network
+        /// &lt;/summary&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;User&gt; GetAllUsers()
+        {
+           
+            //string response = Yammer.HttpUtility.Get(Resources.YAMMER_USERS_ALL);
+            //return User.GetAllUsers(response);
+            if (Session.Assets == null)
+                Session.Assets = new Assets();
+
+            return Session.Assets.Users;
+        }
+
+        /// &lt;summary&gt;
+        /// Retrieves list of users in network 
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;userParams&quot;&gt;&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        public static List&lt;User&gt; GetAllUsers(MembershipParameters userParams)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            Yammer.Utility.AddMembershipParams(parameters, userParams);
+            string response = Yammer.HttpUtility.Get(Resources.YAMMER_USERS_ALL, parameters);
+            return User.GetAllUsers(response);
+        }
+
+        public static User GetUserById(int id)
+        {
+            if (Session.Assets == null)
+                Session.Assets = new Assets();
+
+            return Session.Assets.Users.Find(delegate(User u) { return int.Parse(u.Id) == id; });
+        }
+
+        public static User GetUserById(List&lt;User&gt; users, int id)
+        {
+            return users.Find(delegate(User u) { return int.Parse(u.Id) == id; });
+        }
+
+        public static User GetUserByUserName(string name)
+        {
+            return Yammer.User.GetAllUsers().Find(delegate(Yammer.User u) { return u.Name.ToLower() == name.ToLower(); });
+        }
+
+        public static void Update(int id, UserParameters userParams)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            AddUserParam(parameters, userParams);
+            string response = Yammer.HttpUtility.Put(Resources.YAMMER_USERS_MODIFY + id.ToString() + &quot;.xml&quot;, parameters);
+            Session.Assets.UpdateUsers();
+        }
+
+        public static void Create(UserParameters userParams)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            AddUserParam(parameters, userParams);
+            string response = Yammer.HttpUtility.Post(Resources.YAMMER_USERS_CREATE, parameters);
+        }
+
+        public static void Delete(int id)
+        {
+            NameValueCollection parameters = new NameValueCollection();
+            parameters.Add(&quot;delete&quot;, &quot;true&quot;);
+            string response = Yammer.HttpUtility.Delete(Resources.YAMMER_USERS_DELETE + id.ToString() + &quot;.xml&quot;, parameters);
+            Session.Assets.UpdateUsers();
+        }
+
+        public void Delete()
+        {
+            User.Delete(int.Parse(this.Id));
+           
+        }
+
+        private static void AddUserParam(NameValueCollection parameters, UserParameters userParams)
+        {
+            PropertyInfo[] pic = userParams.GetType().GetProperties();
+            UserAttribute name;
+            foreach (PropertyInfo pi in pic)
+            {
+                object value = pi.GetValue(userParams, null);
+                bool include = false;
+                if (value != null)
+                {
+                    string typeName = value.GetType().Name;
+                    switch (typeName)
+                    {
+                        case &quot;String&quot;:
+                            name = (UserAttribute)UserAttribute.GetCustomAttribute(pi, typeof(UserAttribute));
+                            parameters.Add(name.Name, pi.GetValue(userParams, null).ToString());
+                            break;
+                        case &quot;List`1&quot;:
+                            name = (UserAttribute)UserAttribute.GetCustomAttribute(pi, typeof(UserAttribute));
+                            if (name.Name == &quot;education[]&quot;)
+                            {
+                                List&lt;UserEducation&gt; edl = (List&lt;UserEducation&gt;)pi.GetValue(userParams, null);
+                                foreach (UserEducation pc in edl)
+                                    parameters.Add(name.Name, pc.School + &quot;,&quot; + pc.Degree + &quot;,&quot; + pc.Description + &quot;,&quot; + pc.StartYear + &quot;,&quot; + pc.EndYear);
+
+                            }
+                            else if (name.Name == &quot;previous_companies[]&quot;)
+                            {
+                                List&lt;PreviousCompany&gt; pcl = (List&lt;PreviousCompany&gt;)pi.GetValue(userParams, null);
+                                foreach (PreviousCompany pc in pcl)
+                                    parameters.Add(name.Name, pc.Company + &quot;,&quot; + pc.Position + &quot;,&quot; + pc.Description + &quot;,&quot; + pc.StartYear + &quot;,&quot; + pc.EndYear);
+                            }
+                            break;
+                        default:
+                            include = false;
+                            break;
+                    }
+                }
+            }
+        }
+
+        public void Save(UserParameters up)
+        {
+            User.Update(int.Parse(this.Id), up);
+            
+        }
 
     }
 
-    public class UserStats
+    public class Stats
     {
-
         [DataMember(Name = &quot;updates&quot;)]
         [XmlElement(ElementName = &quot;updates&quot;)]
         public string Updates { get; set; }
 
-
         [DataMember(Name = &quot;followers&quot;)]
         [XmlElement(ElementName = &quot;followers&quot;)]
         public string Followers { get; set; }</diff>
      <filename>Yammer Framework/Yammer/User.cs</filename>
    </modified>
    <modified>
      <diff>@@ -5,6 +5,9 @@ using System.Text;
 using System.IO;
 using System.Xml;
 using System.Xml.Serialization;
+using System.Windows.Forms;
+using System.Reflection;
+using System.Collections.Specialized;
 namespace Yammer
 {
     public class Utility
@@ -13,10 +16,11 @@ namespace Yammer
         /// Retrieves application directory collection
         /// &lt;/summary&gt;
         /// &lt;returns&gt;application directory collection&lt;/returns&gt;
-        public static Dictionary&lt;string, DirectoryInfo&gt; GetAppDirectory()
+        public static Dictionary&lt;string, DirectoryInfo&gt; GetAppData()
         {
             Dictionary&lt;string, DirectoryInfo&gt; appData = new Dictionary&lt;string, DirectoryInfo&gt;();
-            string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData);
+           
+            string path = System.Environment.CurrentDirectory;
 
             if (!Directory.Exists(path + &quot;\\&quot; + &quot;Yammer\\Data&quot;))
                 Directory.CreateDirectory(path + &quot;\\&quot; + &quot;Yammer\\Data&quot;);
@@ -37,7 +41,7 @@ namespace Yammer
         /// &lt;returns&gt;application&lt;see cref=&quot;Variables&quot;/&gt;variables&lt;/returns&gt;
         public static Variables GetApplicationData()
         {
-            Dictionary&lt;string, DirectoryInfo&gt; appData = Utility.GetAppDirectory();
+            Dictionary&lt;string, DirectoryInfo&gt; appData = Utility.GetAppData();
             if (System.IO.File.Exists(appData[&quot;data&quot;] + &quot;\\application.yam&quot;))
             {
                 XmlSerializer serializer = new XmlSerializer(typeof(Variables));
@@ -55,7 +59,7 @@ namespace Yammer
         /// &lt;param name=&quot;lastMessageId&quot;&gt;&lt;/param&gt;
         public static void SetApplicationData(string lastMessageId)
         {
-            Dictionary&lt;string, DirectoryInfo&gt; appData = Utility.GetAppDirectory();
+            Dictionary&lt;string, DirectoryInfo&gt; appData = Utility.GetAppData();
             Variables variables = new Variables();
             variables.LastMessageId = lastMessageId;
             TextWriter writer = new StreamWriter(appData[&quot;data&quot;] + &quot;\\application.yam&quot;);
@@ -63,5 +67,89 @@ namespace Yammer
             serializer.Serialize(writer, variables);
             writer.Close();
         }
+
+
+        public static string GetErrorLog()
+        {
+            Dictionary&lt;string, DirectoryInfo&gt; appData = Utility.GetAppData();
+            if (System.IO.File.Exists(appData[&quot;data&quot;] + &quot;\\errorlog.yam&quot;))
+            {
+                XmlSerializer serializer = new XmlSerializer(typeof(Variables));
+                TextReader reader = new StreamReader(appData[&quot;data&quot;] + &quot;\\errorlog.yam&quot;);
+                string errorLog = reader.ReadToEnd();
+                reader.Close();
+                return errorLog;
+            }
+            return null;
+        }
+
+        public static void SetErrorLog(string error)
+        {
+            Dictionary&lt;string, DirectoryInfo&gt; appData = Utility.GetAppData();
+            string errorLog = GetErrorLog();
+            StringBuilder sb = new StringBuilder();
+            if (errorLog != null)
+                sb.AppendLine(errorLog);
+
+            sb.AppendLine(error);
+            sb.AppendLine(&quot;**************************************************************************&quot;);
+            sb.AppendLine(&quot;&quot;);
+
+            TextWriter writer = new StreamWriter(appData[&quot;data&quot;] + &quot;\\errorlog.yam&quot;);
+            writer.Write(sb.ToString());
+            writer.Close();
+
+        }
+
+
+        public static object Deserialize(Type type, string xml)
+        {
+
+            XmlSerializer serializer = new XmlSerializer(type);
+            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
+            byte[] bytes = encoding.GetBytes(xml);
+            System.IO.MemoryStream stream = new MemoryStream(bytes);
+            object obj = (object)serializer.Deserialize(stream);
+
+            return obj;
+
+        }
+
+        public static void AddMembershipParams(NameValueCollection parameters, MembershipParameters groupParams)
+        {
+            PropertyInfo[] pic = groupParams.GetType().GetProperties();
+            foreach (PropertyInfo pi in pic)
+            {
+                object value = pi.GetValue(groupParams, null);
+                bool include = false;
+                if (value != null)
+                {
+                    string typeName = value.GetType().Name;
+                    switch (typeName)
+                    {
+                        case &quot;Int32&quot;:
+                            if ((int)value &gt; 0)
+                                include = true;
+                            break;
+                        case &quot;SortBy&quot;:
+                            if ((SortBy)value != SortBy.NONE)
+                                include = true;
+                            break;
+                        default:
+                            include = true;
+                            break;
+                    }
+
+
+                    if (include)
+                    {
+                        MembershipParameterAttribute name = (MembershipParameterAttribute)MembershipParameterAttribute.GetCustomAttribute(pi, typeof(MembershipParameterAttribute));
+                        parameters.Add(name.Name, pi.GetValue(groupParams, null).ToString());
+                    }
+                }
+            }
+
+
+        }
     }
 }</diff>
      <filename>Yammer Framework/Yammer/Utility.cs</filename>
    </modified>
    <modified>
      <diff>@@ -58,6 +58,8 @@
     &lt;Reference Include=&quot;System.Xml&quot; /&gt;
   &lt;/ItemGroup&gt;
   &lt;ItemGroup&gt;
+    &lt;Compile Include=&quot;ApiWrapper.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Assets.cs&quot; /&gt;
     &lt;Compile Include=&quot;Attachment.cs&quot; /&gt;
     &lt;Compile Include=&quot;Auth.cs&quot; /&gt;
     &lt;Compile Include=&quot;AutoComplete.cs&quot; /&gt;
@@ -66,33 +68,40 @@
     &lt;Compile Include=&quot;Enumerations.cs&quot; /&gt;
     &lt;Compile Include=&quot;File.cs&quot; /&gt;
     &lt;Compile Include=&quot;Group.cs&quot; /&gt;
+    &lt;Compile Include=&quot;MembershipParameters.cs&quot; /&gt;
     &lt;Compile Include=&quot;Guide.cs&quot; /&gt;
     &lt;Compile Include=&quot;HttpUtility.cs&quot; /&gt;
     &lt;Compile Include=&quot;Image.cs&quot; /&gt;
     &lt;Compile Include=&quot;Message.cs&quot; /&gt;
+    &lt;Compile Include=&quot;MessageProperties.cs&quot; /&gt;
+    &lt;Compile Include=&quot;PreviousCompany.cs&quot; /&gt;
     &lt;Compile Include=&quot;Reference.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Relationship.cs&quot; /&gt;
     &lt;Compile Include=&quot;Resources.cs&quot; /&gt;
     &lt;Compile Include=&quot;Properties\AssemblyInfo.cs&quot; /&gt;
     &lt;Compile Include=&quot;Security.cs&quot; /&gt;
     &lt;Compile Include=&quot;Session.cs&quot; /&gt;
     &lt;Compile Include=&quot;Settings.cs&quot; /&gt;
     &lt;Compile Include=&quot;Subscription.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Suggested.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Suggestion.cs&quot; /&gt;
     &lt;Compile Include=&quot;Tag.cs&quot; /&gt;
     &lt;Compile Include=&quot;Thread.cs&quot; /&gt;
     &lt;Compile Include=&quot;User.cs&quot; /&gt;
-    &lt;Compile Include=&quot;ApiWrapper.cs&quot; /&gt;
+    &lt;Compile Include=&quot;UserEducation.cs&quot; /&gt;
+    &lt;Compile Include=&quot;UserParameters.cs&quot; /&gt;
     &lt;Compile Include=&quot;Utility.cs&quot; /&gt;
     &lt;Compile Include=&quot;Variables.cs&quot; /&gt;
   &lt;/ItemGroup&gt;
   &lt;ItemGroup&gt;
+    &lt;None Include=&quot;ClassDiagram1.cd&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
     &lt;ProjectReference Include=&quot;..\oAuth\oAuth.csproj&quot;&gt;
       &lt;Project&gt;{FA127787-7F14-4EF0-A27E-9BE55880F082}&lt;/Project&gt;
       &lt;Name&gt;oAuth&lt;/Name&gt;
     &lt;/ProjectReference&gt;
   &lt;/ItemGroup&gt;
-  &lt;ItemGroup&gt;
-    &lt;None Include=&quot;ClassDiagram1.cd&quot; /&gt;
-  &lt;/ItemGroup&gt;
   &lt;Import Project=&quot;$(MSBuildToolsPath)\Microsoft.CSharp.targets&quot; /&gt;
   &lt;!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.</diff>
      <filename>Yammer Framework/Yammer/Yammer.csproj</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/bin/Debug/Yammer.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/bin/Debug/Yammer.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/bin/Debug/oAuth.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/bin/Debug/oAuth.pdb</filename>
    </modified>
    <modified>
      <diff>@@ -4,589 +4,644 @@
         &lt;name&gt;Yammer&lt;/name&gt;
     &lt;/assembly&gt;
     &lt;members&gt;
-        &lt;member name=&quot;M:Yammer.Utility.GetAppDirectory&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Tag.Type&quot;&gt;
             &lt;summary&gt;
-            Retrieves application directory collection
+            The object type, such as user, tag, etc.
             &lt;/summary&gt;
-            &lt;returns&gt;application directory collection&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.Utility.GetApplicationData&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Tag.Id&quot;&gt;
             &lt;summary&gt;
-            Retrieves application variables
+            The ID number for this object. Note that IDs are not unique across all object types: 
+            there may be a user and tag with the same numerical ID.
             &lt;/summary&gt;
-            &lt;returns&gt;application&lt;see cref=&quot;T:Yammer.Variables&quot;/&gt;variables&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.Utility.SetApplicationData(System.String)&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Tag.Stats&quot;&gt;
             &lt;summary&gt;
-            Writes application variables to client computer
+            Tag stats
             &lt;/summary&gt;
-            &lt;param name=&quot;lastMessageId&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.Auth.GetRequestTokenQuery(System.String,System.String)&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Tag.Name&quot;&gt;
             &lt;summary&gt;
-            Retrieves the OAuth request token
+            Short text identifier
             &lt;/summary&gt;
-            &lt;param name=&quot;consumerKey&quot;&gt;The client's consumer key&lt;/param&gt;
-            &lt;param name=&quot;consumerSecret&quot;&gt;The client's consumer secret&lt;/param&gt;
-            &lt;returns&gt;the request token query string&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.Auth.GetAuthorizeQuery(System.String,System.String)&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Tag.Url&quot;&gt;
             &lt;summary&gt;
-            Retrieves the OAuth authorization token
+            The API resource for fetching this object.
             &lt;/summary&gt;
-            &lt;param name=&quot;tokenKey&quot;&gt;The generated OAuth Token&lt;/param&gt;
-            &lt;param name=&quot;callback&quot;&gt;The callback URL for the client&lt;/param&gt;
-            &lt;returns&gt;the OAuth authorization query string&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.Auth.GetAccessTokenQuery&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Tag.WebUrl&quot;&gt;
             &lt;summary&gt;
-            Retrieves OAuth access token
+            The URL for viewing this object on the main Yammer website.
             &lt;/summary&gt;
-            &lt;returns&gt;the OAuth access token query string&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.Auth.GetRequestToken(System.Net.WebProxy,System.String,System.String)&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Subscription.Url&quot;&gt;
             &lt;summary&gt;
-            retrieves the &lt;see cref=&quot;T:Yammer.Auth&quot;&gt;authorization object&lt;/see&gt;
+            The API resource for fetching this object.
             &lt;/summary&gt;
-            &lt;param name=&quot;proxy&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;consumerKey&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;consumerSecret&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;The &lt;see cref=&quot;T:Yammer.Auth&quot;&gt;authorization object&lt;/see&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.Auth.Authorize(System.String)&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Subscription.Type&quot;&gt;
             &lt;summary&gt;
-            Opens web browser for authorization
+            The object type, such as user, tag, etc.
             &lt;/summary&gt;
-            &lt;param name=&quot;callbackUrl&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;!-- Badly formed XML comment ignored for member &quot;M:Yammer.Auth.GetAccessToken&quot; --&gt;
-        &lt;member name=&quot;M:Yammer.Auth.ReadResponse(System.String,System.String@,System.String@)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_ALL&quot;&gt;
             &lt;summary&gt;
-            Splits the Yammer token key and token secret from the response
+            All messages in this network. Corresponds to the &quot;All&quot; tab on the website
             &lt;/summary&gt;
-            &lt;param name=&quot;response&quot;&gt;The http web response&lt;/param&gt;
-            &lt;param name=&quot;tokenKey&quot;&gt;the token key to save to&lt;/param&gt;
-            &lt;param name=&quot;tokenSecret&quot;&gt;the token secret to save to&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Auth.Proxy&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_SENT&quot;&gt;
             &lt;summary&gt;
-            The client Web Proxy.  Can be null
+            Alias for /api/v1/messages/from_user/logged-in_user_id.format Corresponds to the &quot;Sent&quot; tab on the website.
             &lt;/summary&gt;
-            &lt;remarks&gt;&lt;/remarks&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Auth.Key&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_RECEIVED&quot;&gt;
             &lt;summary&gt;
-            The OAuth key to use
+            Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Auth.ConsumerKey&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_FOLLOWING&quot;&gt;
             &lt;summary&gt;
-            The client's consumer key
+            Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Auth.ConsumerSecret&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_SENT_BY&quot;&gt;
             &lt;summary&gt;
-            The client's consumer secret
+            Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Auth.Settings&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_TAGGED_WITH&quot;&gt;
             &lt;summary&gt;
-            The persisted client settings file.
+            Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Auth.Success&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_IN_THREAD&quot;&gt;
             &lt;summary&gt;
-            Connection success indicator
+            Messages in the thread with the given ID. Corresponds to the page you'd see when clicking on &quot;in reply to&quot; on the website.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Subscription.Url&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_IN_GROUP&quot;&gt;
             &lt;summary&gt;
-            The API resource for fetching this object.
+            Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Subscription.Type&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_FAVORITES_OF&quot;&gt;
             &lt;summary&gt;
-            The object type, such as user, tag, etc.
+            Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;T:Yammer.AutoComplete&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_CREATE&quot;&gt;
             &lt;summary&gt;
-            NOT YET IMPLEMENTED
+            Create a new message.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllMessages(Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_DELETE&quot;&gt;
             &lt;summary&gt;
-            All messages in this network. Corresponds to the &quot;All&quot; tab on the website.
+            Delete a message owned by the current user.
             &lt;/summary&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllMessages(Yammer.PageFlag,System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_ADD_FAVORITE&quot;&gt;
             &lt;summary&gt;
-            Corresponds to the &quot;All&quot; tab on the website. 
+            Add a message to user_id's favorite messages.
             &lt;/summary&gt;
-            &lt;param name=&quot;newer_than&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetSentMessages(Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_DELETE_FAVORITE&quot;&gt;
             &lt;summary&gt;
-            Corresponds to the &quot;Sent&quot; tab on the website.
+            Remove a favorite.
             &lt;/summary&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetSentMessages(Yammer.PageFlag,System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_GROUP_LIST&quot;&gt;
             &lt;summary&gt;
-            Corresponds to the &quot;Sent&quot; tab on the website.
+            A list of groups. 
             &lt;/summary&gt;
-            &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;thread&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetReceivedMessages(Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_TAGS&quot;&gt;
             &lt;summary&gt;
-            Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
+            Tags in this network. NOT YET IMPLEMENTED
             &lt;/summary&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetReceivedMessages(Yammer.PageFlag,System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_TAGS_DATA&quot;&gt;
             &lt;summary&gt;
-            Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
+            View data about one tag.
             &lt;/summary&gt;
-            &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;thread&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetFollowingMessages(Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_USERS_ALL&quot;&gt;
             &lt;summary&gt;
-            Messages followed by the logged-in user. Corresponds to the &quot;Following&quot; tab on the website.
+            Users in this network.
             &lt;/summary&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetFollowingMessages(Yammer.PageFlag,System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_USERS_SINGLE&quot;&gt;
             &lt;summary&gt;
-            Messages followed by the logged-in user. Corresponds to the &quot;Following&quot; tab on the website.
+            View data about one user. 	
             &lt;/summary&gt;
-            &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;date&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesSentBy(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_USERS_CURRENT&quot;&gt;
             &lt;summary&gt;
-            Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
+            Alias to /api/v1/users/current user's id.format.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesTaggedWith(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_GROUP_JOIN&quot;&gt;
             &lt;summary&gt;
-            Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
+            Join a group.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesInThread(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_GROUP_RESIGN&quot;&gt;
             &lt;summary&gt;
-            Messages in the thread with the given ID. Corresponds to the page you'd see when clicking on &quot;in reply to&quot; on the website.
+            Leave a group.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesInGroup(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_RELATIONSHIPS_ALL&quot;&gt;
             &lt;summary&gt;
-            Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
+            Show org chart relationships.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesFavoritesOf(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_RELATIONSHIPS_CREATE&quot;&gt;
             &lt;summary&gt;
-            Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
+            Add an org chart relationship.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.PostMessage(System.String,Yammer.Session,System.Collections.Generic.List{System.String})&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_RELATIONSHIPS_DELETE&quot;&gt;
             &lt;summary&gt;
-            Create a new message.
+            Remove a relationship.
             &lt;/summary&gt;
-            &lt;param name=&quot;body&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.PostMessage(System.String,System.Int32,Yammer.Session,System.Collections.Generic.List{System.String})&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUGGESTIONS_SHOW_ALL&quot;&gt;
             &lt;summary&gt;
-            Create a new message in reply to message of given id
+            Show suggested groups and users. 
             &lt;/summary&gt;
-            &lt;param name=&quot;body&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;reply&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.DeleteMessage(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUGGESTIONS_SHOW_USERS&quot;&gt;
             &lt;summary&gt;
-            Delete a message owned by the current user.
+            Show only suggested users. 
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllGroups(Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUGGESTIONS_SHOW_GROUPS&quot;&gt;
+            &lt;summary&gt;	                                      
+            Show only suggested groups. 	
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUGGESTIONS_DECLINE&quot;&gt;
             &lt;summary&gt;
-            Retrieves a list of all groups
+            Decline a suggestion.
             &lt;/summary&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetGroupById(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUBSCRIPTIONS_TO_USER&quot;&gt;
             &lt;summary&gt;
-            Retrieves data about group of given id
+            Check to see if you are subscribed to the user of the given id.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
-            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.JoinGroup(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUBSCRIPTIONS_TO_TAG&quot;&gt;
             &lt;summary&gt;
-            Join a group.
+            Check to see if you are subscribed to the tag of the given id. 
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.LeaveGroup(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUBSCRIPTIONS_SUBSCRIBE&quot;&gt;
             &lt;summary&gt;
-            Leave a group.
+            Subscribe to a user or tag.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetCurrentUser(Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUBSCRIPTIONS_UNSUBSCRIBE&quot;&gt;
             &lt;summary&gt;
-            Retreives data about current user
+            Unsubscribe to a user or tag.
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;F:Yammer.Resources.YAMMER_AUTOCOMPLETE&quot;&gt;
+            &lt;summary&gt;
+            Return typeahead suggestions for the prefix passed
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllMessages(Yammer.Session)&quot;&gt;
+            &lt;summary&gt;
+            All messages in this network. Corresponds to the &quot;All&quot; tab on the website.
             &lt;/summary&gt;
             &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
             &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetUserById(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllMessages(Yammer.Session,System.Boolean)&quot;&gt;
             &lt;summary&gt;
-            Retrieves data about user of given id
+            All messages in this network. Corresponds to the &quot;All&quot; tab on the website.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
             &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;threaded&quot;&gt;Return only the first message in each thread.&lt;/param&gt;
             &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllUsers(Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllMessages(Yammer.PageFlag,System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Retrieves list of users in network
+            Corresponds to the &quot;All&quot; tab on the website. 
             &lt;/summary&gt;
+            &lt;param name=&quot;newer_than&quot;&gt;&lt;/param&gt;
             &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
             &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllRelationships(Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllMessages(Yammer.PageFlag,System.Int32,System.Boolean,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Retrieves org chart relationships.
+            Corresponds to the &quot;All&quot; tab on the website. 
             &lt;/summary&gt;
+            &lt;param name=&quot;newer_than&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;threaded&quot;&gt;Return only the first message in each thread.&lt;/param&gt;
             &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.CreateRelationship(Yammer.RelationshipType,System.String,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetSentMessages(Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Creates a new org chart relationship
+            Corresponds to the &quot;Sent&quot; tab on the website.
             &lt;/summary&gt;
-            &lt;param name=&quot;type&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;email&quot;&gt;&lt;/param&gt;
             &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.DeleteRelationship&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetSentMessages(Yammer.Session,System.Boolean)&quot;&gt;
             &lt;summary&gt;
-            Deletes org chart relationship
-            NOT YET IMPLEMENTED
+            Corresponds to the &quot;Sent&quot; tab on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;threaded&quot;&gt;Return only the first message in each thread.&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllSuggestions(Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetSentMessages(Yammer.PageFlag,System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Returns list of all suggested groups and users
-            NOT YET IMPLEMENTED
+            Corresponds to the &quot;Sent&quot; tab on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;threaded&quot;&gt;&lt;/param&gt;
             &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.SubscribeToUser(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetSentMessages(Yammer.PageFlag,System.Int32,System.Boolean,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Subscribe to user
+            Corresponds to the &quot;Sent&quot; tab on the website.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;threaded&quot;&gt;&lt;/param&gt;
             &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.SubscribeToTag(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetReceivedMessages(Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Subscribe to tag
+            Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
             &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.DeleteSubscriptionToUser(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetReceivedMessages(Yammer.Session,System.Boolean)&quot;&gt;
             &lt;summary&gt;
-            Unsubscribe to user
+            Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
             &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.ApiWrapper.DeleteSubscriptionToTag(System.Int32,Yammer.Session)&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetReceivedMessages(Yammer.PageFlag,System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Unsubscribe to tag
+            Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
             &lt;/summary&gt;
-            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;thread&quot;&gt;&lt;/param&gt;
             &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Group.Type&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetReceivedMessages(Yammer.PageFlag,System.Int32,System.Boolean,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The object type, such as user, tag, etc.
+            Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;thread&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Group.Id&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetFollowingMessages(Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The ID number for this object. Note that IDs are not unique across all object types: 
-            there may be a user and tag with the same numerical ID.
+            Messages followed by the logged-in user. Corresponds to the &quot;Following&quot; tab on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Group.FullName&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetFollowingMessages(Yammer.Session,System.Boolean)&quot;&gt;
             &lt;summary&gt;
-            Name given to this group.
+            Messages followed by the logged-in user. Corresponds to the &quot;Following&quot; tab on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Group.Name&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetFollowingMessages(Yammer.PageFlag,System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Shortened name of this group. Used in references (@salesteam), addressing (to:salesteam), 
-            the email address for group updates (salesteam@yammer.com) and the web URL (www.yammer.com/groups/salesteam). 
+            Messages followed by the logged-in user. Corresponds to the &quot;Following&quot; tab on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;date&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Group.Privacy&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetFollowingMessages(Yammer.PageFlag,System.Int32,System.Boolean,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Either public or private, to indicate whether updates are visible to non-members 
-            (public) and whether joining requires a group admin's approval (private). 
+            Messages followed by the logged-in user. Corresponds to the &quot;Following&quot; tab on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;flag&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;date&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Group.Url&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesSentBy(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The API resource for fetching this object.
+            Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Group.WebUrl&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesSentBy(System.Int32,Yammer.Session,System.Boolean)&quot;&gt;
             &lt;summary&gt;
-            The URL for viewing this object on the main Yammer website.
+            Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Group.Stats&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesSentBy(Yammer.PageFlag,System.Int32,System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Group stats
+            Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.Settings.CheckConfiguration&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesSentBy(Yammer.PageFlag,System.Int32,System.Int32,System.Boolean,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Checks if the persisted &lt;see cref=&quot;T:Yammer.Settings&quot;&gt;settings&lt;/see&gt; file exists on the client
+            Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
             &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;M:Yammer.Settings.SaveConfiguration(System.String,System.String,OAuth.OAuthKey,System.Net.WebProxy)&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesTaggedWith(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Saves the &lt;see cref=&quot;T:Yammer.Settings&quot;&gt;settings&lt;/see&gt; file to the client
+            Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
             &lt;/summary&gt;
-            &lt;param name=&quot;tokenKey&quot;&gt;&lt;/param&gt;
-            &lt;param name=&quot;tokenSecret&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Guide.Type&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesTaggedWith(System.Int32,Yammer.Session,System.Boolean)&quot;&gt;
             &lt;summary&gt;
-            The object type.
+            Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Guide.Id&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesTaggedWith(Yammer.PageFlag,System.Int32,System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The ID number for this object. Note that IDs are not unique across all object types: 
-            there may be a user and tag with the same numerical ID.
+            Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Guide.Name&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesTaggedWith(Yammer.PageFlag,System.Int32,System.Int32,Yammer.Session,System.Boolean)&quot;&gt;
             &lt;summary&gt;
-            The name of this guide
+            Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Guide.FullName&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesInGroup(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The guide's full name.
+            Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Guide.MugshotUrl&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesInGroup(System.Int32,Yammer.Session,System.Boolean)&quot;&gt;
             &lt;summary&gt;
-            The URL of this guide's picture.
+            Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Guide.WebUrl&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesInGroup(Yammer.PageFlag,System.Int32,System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The URL for viewing this object on the main Yammer website.
+            Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Body.Plain&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesInGroup(Yammer.PageFlag,System.Int32,System.Int32,Yammer.Session,System.Boolean)&quot;&gt;
             &lt;summary&gt;
-            A plaintext version of the message body.
+            Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Body.Parsed&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesFavoritesOf(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            A version of the message body with #tags and @users replaced by [[object:id]]. 
-            This is not present in the reference version of a message.
+            Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.Type&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesFavoritesOf(System.Int32,Yammer.Session,System.Boolean)&quot;&gt;
             &lt;summary&gt;
-            The object type.
+            Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.Id&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesFavoritesOf(Yammer.PageFlag,System.Int32,System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The ID number for this object. Note that IDs are not unique across all object types: 
-            there may be a user and tag with the same numerical ID.
+            Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.Name&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesFavoritesOf(Yammer.PageFlag,System.Int32,System.Int32,Yammer.Session,System.Boolean)&quot;&gt;
             &lt;summary&gt;
-            The username of this user.
+            Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.FullName&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesInThread(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The user's full name.
+            Messages in the thread with the given ID. Corresponds to the page you'd see when clicking on &quot;in reply to&quot; on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.MugshotUrl&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetMessagesInThread(Yammer.PageFlag,System.Int32,System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The URL of this user's picture.
+            Messages in the thread with the given ID. Corresponds to the page you'd see when clicking on &quot;in reply to&quot; on the website.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.Url&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.PostMessage(System.String,Yammer.Session,System.Collections.Generic.List{System.String})&quot;&gt;
             &lt;summary&gt;
-            The API resource for fetching this object.
+            Create a new message.
             &lt;/summary&gt;
+            &lt;param name=&quot;body&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.WebUrl&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.PostMessage(System.String,System.Int32,Yammer.Session,System.Collections.Generic.List{System.String})&quot;&gt;
             &lt;summary&gt;
-            The URL for viewing this object on the main Yammer website.
+            Sends message in reply to message of given id
             &lt;/summary&gt;
+            &lt;param name=&quot;body&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;reply&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.JobTitle&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.PostMessage(System.Int32,System.String,Yammer.Session,System.Collections.Generic.List{System.String})&quot;&gt;
             &lt;summary&gt;
-            User's job title
+            Sends a private message directly to the user indicated.
             &lt;/summary&gt;
+            &lt;param name=&quot;directToId&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;body&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;attachments&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.Contact&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.PostMessage(System.String,Yammer.Session,System.Int32,System.Collections.Generic.List{System.String})&quot;&gt;
             &lt;summary&gt;
-            User's contact information
+            Sends a message to the group indicated
             &lt;/summary&gt;
+            &lt;param name=&quot;body&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;groupId&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;attachments&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.NetworkId&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.DeleteMessage(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The network id of the user
+            Delete a message owned by the current user.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.HireDate&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllGroups(Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            User's date of hire
+            Retrieves a list of all groups
             &lt;/summary&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.NetworkName&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetGroupById(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The network name of the user
+            Retrieves data about group of given id
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.Stats&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.JoinGroup(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            User's stats
+            Join a group.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.User.Location&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.LeaveGroup(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            User location
+            Leave a group.
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.Id&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetCurrentUser(Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The ID number for this object. Note that IDs are not unique across all object types: 
-            there may be a user and tag with the same numerical ID.
+            Retreives data about current user
             &lt;/summary&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.GroupId&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetUserById(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            (Optional) When a message is posted into a group, that group's ID will appear here 
-            and the group will be available in the references section.
+            Retrieves data about user of given id
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.DirectToId&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllUsers(Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            (Optional) When a message is a private 1-to-1 (or &quot;direct&quot;) message, this will 
-            indicate the intended recipient.
+            Retrieves list of users in network
             &lt;/summary&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.Url&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllRelationships(Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The API resource for fetching this object.
+            Retrieves org chart relationships.
             &lt;/summary&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.WebUrl&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.CreateRelationship(Yammer.RelationshipType,System.String,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The URL for viewing this object on the main Yammer website.
+            Creates a new org chart relationship
             &lt;/summary&gt;
+            &lt;param name=&quot;type&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;email&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.RepliedToId&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.DeleteRelationship(Yammer.Session,System.Int32,Yammer.RelationshipType)&quot;&gt;
             &lt;summary&gt;
-            The ID of the message this message is in reply to, if applicable.
+            Deletes org chart relationship
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.ThreadId&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetAllSuggestions(Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The thread in which this message appears.
+            Returns list of all suggested groups and users
             &lt;/summary&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.Body&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetSuggestedUsers(Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            Message body
+            Returns list of all suggested users
+            NOT YET IMPLEMENTED
             &lt;/summary&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.Attachments&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.GetSuggestedGroups(Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            A list of attachments for this message.
+            Returns list of all suggested groups
+            NOT YET IMPLEMENTED
             &lt;/summary&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.MessageType&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.SubscribeToUser(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            This will be system or update. A system message is automatically generated by the 
-            system and describes an action, such as &quot;Kris Gale has joined the Geni network.&quot; 
-            An update message is a regular message posted by a user such as &quot;Kris Gale: Hi everyone.&quot; 
-            Put simply, this indicates whether a colon will separate the body of the message 
-            from the sender's name in the web interface.
+            Subscribe to user
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.SenderId&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.SubscribeToTag(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The ID of the message's sender.
+            Subscribe to tag
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.SenderType&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.DeleteSubscriptionToUser(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The sender's object type: user or guide. The guide is virtual user that exists 
-            in the system to send messages such as the tips and initial welcome message.
+            Unsubscribe to user
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Message.CreatedAt&quot;&gt;
+        &lt;member name=&quot;M:Yammer.ApiWrapper.DeleteSubscriptionToTag(System.Int32,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
-            The time and date this resource was created. This would indicate when a 
-            user joined the network or when a message was posted.
+            Unsubscribe to tag
             &lt;/summary&gt;
+            &lt;param name=&quot;id&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;&lt;/param&gt;
         &lt;/member&gt;
         &lt;member name=&quot;P:Yammer.Thread.Type&quot;&gt;
             &lt;summary&gt;
@@ -614,6 +669,24 @@
             Thread stats
             &lt;/summary&gt;
         &lt;/member&gt;
+        &lt;member name=&quot;T:Yammer.AutoComplete&quot;&gt;
+            &lt;summary&gt;
+            NOT YET IMPLEMENTED
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:Yammer.Settings.CheckConfiguration&quot;&gt;
+            &lt;summary&gt;
+            Checks if the persisted &lt;see cref=&quot;T:Yammer.Settings&quot;&gt;settings&lt;/see&gt; file exists on the client
+            &lt;/summary&gt;
+            &lt;returns&gt;&lt;/returns&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:Yammer.Settings.SaveConfiguration(System.String,System.String,OAuth.OAuthKey,System.Net.WebProxy)&quot;&gt;
+            &lt;summary&gt;
+            Saves the &lt;see cref=&quot;T:Yammer.Settings&quot;&gt;settings&lt;/see&gt; file to the client
+            &lt;/summary&gt;
+            &lt;param name=&quot;tokenKey&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;tokenSecret&quot;&gt;&lt;/param&gt;
+        &lt;/member&gt;
         &lt;member name=&quot;M:Yammer.HttpUtility.Get(System.String,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
             Creates http get web request and returns response
@@ -650,6 +723,14 @@
             &lt;param name=&quot;session&quot;&gt;The Yammer&lt;see cref=&quot;T:Yammer.Session&quot;&gt;session&lt;/see&gt; object&lt;/param&gt;
             &lt;returns&gt;http response&lt;/returns&gt;
         &lt;/member&gt;
+        &lt;member name=&quot;M:Yammer.HttpUtility.Delete(System.String,System.Collections.Specialized.NameValueCollection,Yammer.Session)&quot;&gt;
+            &lt;summary&gt;
+            Creates http delete web request and returns response
+            &lt;/summary&gt;
+            &lt;param name=&quot;url&quot;&gt;The URL for the web request&lt;/param&gt;
+            &lt;param name=&quot;session&quot;&gt;The Yammer&lt;see cref=&quot;T:Yammer.Session&quot;&gt;session&lt;/see&gt; object&lt;/param&gt;
+            &lt;returns&gt;http response&lt;/returns&gt;
+        &lt;/member&gt;
         &lt;member name=&quot;M:Yammer.HttpUtility.CreateAuthHeader(Yammer.WebMethod,System.String,System.String,System.String,Yammer.Session)&quot;&gt;
             &lt;summary&gt;
             Creates the OAuth header for the http request
@@ -736,37 +817,144 @@
             &lt;param name=&quot;parameters&quot;&gt;The query string parameters&lt;/param&gt;
             &lt;param name=&quot;request&quot;&gt;The http request to write to&lt;/param&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Tag.Type&quot;&gt;
+        &lt;member name=&quot;M:Yammer.Utility.GetAppData&quot;&gt;
+            &lt;summary&gt;
+            Retrieves application directory collection
+            &lt;/summary&gt;
+            &lt;returns&gt;application directory collection&lt;/returns&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:Yammer.Utility.GetApplicationData&quot;&gt;
+            &lt;summary&gt;
+            Retrieves application variables
+            &lt;/summary&gt;
+            &lt;returns&gt;application&lt;see cref=&quot;T:Yammer.Variables&quot;/&gt;variables&lt;/returns&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:Yammer.Utility.SetApplicationData(System.String)&quot;&gt;
+            &lt;summary&gt;
+            Writes application variables to client computer
+            &lt;/summary&gt;
+            &lt;param name=&quot;lastMessageId&quot;&gt;&lt;/param&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:Yammer.Auth.GetRequestTokenQuery(System.String,System.String)&quot;&gt;
+            &lt;summary&gt;
+            Retrieves the OAuth request token
+            &lt;/summary&gt;
+            &lt;param name=&quot;consumerKey&quot;&gt;The client's consumer key&lt;/param&gt;
+            &lt;param name=&quot;consumerSecret&quot;&gt;The client's consumer secret&lt;/param&gt;
+            &lt;returns&gt;the request token query string&lt;/returns&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:Yammer.Auth.GetAuthorizeQuery(System.String,System.String)&quot;&gt;
+            &lt;summary&gt;
+            Retrieves the OAuth authorization token
+            &lt;/summary&gt;
+            &lt;param name=&quot;tokenKey&quot;&gt;The generated OAuth Token&lt;/param&gt;
+            &lt;param name=&quot;callback&quot;&gt;The callback URL for the client&lt;/param&gt;
+            &lt;returns&gt;the OAuth authorization query string&lt;/returns&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:Yammer.Auth.GetAccessTokenQuery(System.String)&quot;&gt;
+            &lt;summary&gt;
+            Retrieves OAuth access token
+            &lt;/summary&gt;
+            &lt;returns&gt;the OAuth access token query string&lt;/returns&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:Yammer.Auth.GetRequestToken(System.Net.WebProxy,System.String,System.String)&quot;&gt;
+            &lt;summary&gt;
+            retrieves the &lt;see cref=&quot;T:Yammer.Auth&quot;&gt;authorization object&lt;/see&gt;
+            &lt;/summary&gt;
+            &lt;param name=&quot;proxy&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;consumerKey&quot;&gt;&lt;/param&gt;
+            &lt;param name=&quot;consumerSecret&quot;&gt;&lt;/param&gt;
+            &lt;returns&gt;The &lt;see cref=&quot;T:Yammer.Auth&quot;&gt;authorization object&lt;/see&gt;&lt;/returns&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:Yammer.Auth.Authorize(System.String)&quot;&gt;
+            &lt;summary&gt;
+            Opens web browser for authorization
+            &lt;/summary&gt;
+            &lt;param name=&quot;callbackUrl&quot;&gt;&lt;/param&gt;
+        &lt;/member&gt;
+        &lt;!-- Badly formed XML comment ignored for member &quot;M:Yammer.Auth.GetAccessToken(System.String)&quot; --&gt;
+        &lt;member name=&quot;M:Yammer.Auth.ReadResponse(System.String,System.String@,System.String@)&quot;&gt;
+            &lt;summary&gt;
+            Splits the Yammer token key and token secret from the response
+            &lt;/summary&gt;
+            &lt;param name=&quot;response&quot;&gt;The http web response&lt;/param&gt;
+            &lt;param name=&quot;tokenKey&quot;&gt;the token key to save to&lt;/param&gt;
+            &lt;param name=&quot;tokenSecret&quot;&gt;the token secret to save to&lt;/param&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;P:Yammer.Auth.Proxy&quot;&gt;
+            &lt;summary&gt;
+            The client Web Proxy.  Can be null
+            &lt;/summary&gt;
+            &lt;remarks&gt;&lt;/remarks&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;P:Yammer.Auth.Key&quot;&gt;
+            &lt;summary&gt;
+            The OAuth key to use
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;P:Yammer.Auth.ConsumerKey&quot;&gt;
+            &lt;summary&gt;
+            The client's consumer key
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;P:Yammer.Auth.ConsumerSecret&quot;&gt;
+            &lt;summary&gt;
+            The client's consumer secret
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;P:Yammer.Auth.Settings&quot;&gt;
+            &lt;summary&gt;
+            The persisted client settings file.
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;P:Yammer.Auth.Success&quot;&gt;
+            &lt;summary&gt;
+            Connection success indicator
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;P:Yammer.Group.Type&quot;&gt;
             &lt;summary&gt;
             The object type, such as user, tag, etc.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Tag.Id&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Group.Id&quot;&gt;
             &lt;summary&gt;
             The ID number for this object. Note that IDs are not unique across all object types: 
             there may be a user and tag with the same numerical ID.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Tag.Stats&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Group.FullName&quot;&gt;
             &lt;summary&gt;
-            Tag stats
+            Name given to this group.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Tag.Name&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Group.Name&quot;&gt;
             &lt;summary&gt;
-            Short text identifier
+            Shortened name of this group. Used in references (@salesteam), addressing (to:salesteam), 
+            the email address for group updates (salesteam@yammer.com) and the web URL (www.yammer.com/groups/salesteam). 
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Tag.Url&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Group.Privacy&quot;&gt;
+            &lt;summary&gt;
+            Either public or private, to indicate whether updates are visible to non-members 
+            (public) and whether joining requires a group admin's approval (private). 
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;P:Yammer.Group.Url&quot;&gt;
             &lt;summary&gt;
             The API resource for fetching this object.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Yammer.Tag.WebUrl&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Group.WebUrl&quot;&gt;
             &lt;summary&gt;
             The URL for viewing this object on the main Yammer website.
             &lt;/summary&gt;
         &lt;/member&gt;
+        &lt;member name=&quot;P:Yammer.Group.Stats&quot;&gt;
+            &lt;summary&gt;
+            Group stats
+            &lt;/summary&gt;
+        &lt;/member&gt;
         &lt;member name=&quot;F:Yammer.Attachment.filename&quot;&gt;
             &lt;summary&gt;
             The filename of the filepart to be uploaded.
@@ -827,174 +1015,191 @@
             Gets the length of the data to be sent.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_ALL&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.Id&quot;&gt;
             &lt;summary&gt;
-            All messages in this network. Corresponds to the &quot;All&quot; tab on the website
+            The ID number for this object. Note that IDs are not unique across all object types: 
+            there may be a user and tag with the same numerical ID.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_SENT&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.GroupId&quot;&gt;
             &lt;summary&gt;
-            Alias for /api/v1/messages/from_user/logged-in_user_id.format Corresponds to the &quot;Sent&quot; tab on the website.
+            (Optional) When a message is posted into a group, that group's ID will appear here 
+            and the group will be available in the references section.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_RECEIVED&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.DirectToId&quot;&gt;
             &lt;summary&gt;
-            Messages received by the logged-in user. Corresponds to the &quot;Received&quot; tab on the website.
+            (Optional) When a message is a private 1-to-1 (or &quot;direct&quot;) message, this will 
+            indicate the intended recipient.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_FOLLOWING&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.Url&quot;&gt;
             &lt;summary&gt;
-            Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
+            The API resource for fetching this object.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_SENT_BY&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.WebUrl&quot;&gt;
             &lt;summary&gt;
-            Messages sent by the user with the given ID. Corresponds to the messages on a user profile page on the website.
+            The URL for viewing this object on the main Yammer website.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_TAGGED_WITH&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.RepliedToId&quot;&gt;
             &lt;summary&gt;
-            Messages including the tag with given ID. Corresponds to the messages on a tag's page on the website.
+            The ID of the message this message is in reply to, if applicable.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_IN_THREAD&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.ThreadId&quot;&gt;
             &lt;summary&gt;
-            Messages in the thread with the given ID. Corresponds to the page you'd see when clicking on &quot;in reply to&quot; on the website.
+            The thread in which this message appears.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_IN_GROUP&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.Body&quot;&gt;
             &lt;summary&gt;
-            Messages in the group with the given ID. Corresponds to the messages you'd see on a group's profile page.
+            Message body
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_FAVORITES_OF&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.Attachments&quot;&gt;
             &lt;summary&gt;
-            Favorite messages of the given user ID. Can pass 'current' in place of user_id for currently logged in user
+            A list of attachments for this message.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_CREATE&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.MessageType&quot;&gt;
             &lt;summary&gt;
-            Create a new message.
+            This will be system or update. A system message is automatically generated by the 
+            system and describes an action, such as &quot;Kris Gale has joined the Geni network.&quot; 
+            An update message is a regular message posted by a user such as &quot;Kris Gale: Hi everyone.&quot; 
+            Put simply, this indicates whether a colon will separate the body of the message 
+            from the sender's name in the web interface.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_DELETE&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.SenderId&quot;&gt;
             &lt;summary&gt;
-            Delete a message owned by the current user.
+            The ID of the message's sender.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_ADD_FAVORITE&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.SenderType&quot;&gt;
             &lt;summary&gt;
-            Add a message to user_id's favorite messages.
+            The sender's object type: user or guide. The guide is virtual user that exists 
+            in the system to send messages such as the tips and initial welcome message.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_MESSAGES_DELETE_FAVORITE&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Message.CreatedAt&quot;&gt;
             &lt;summary&gt;
-            Remove a favorite.
+            The time and date this resource was created. This would indicate when a 
+            user joined the network or when a message was posted.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_GROUP_LIST&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Guide.Type&quot;&gt;
             &lt;summary&gt;
-            A list of groups. 
+            The object type.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_GROUP_DATA&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Guide.Id&quot;&gt;
             &lt;summary&gt;
-            https://www.yammer.com/api/v1/groups/id.format
+            The ID number for this object. Note that IDs are not unique across all object types: 
+            there may be a user and tag with the same numerical ID.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_TAGS&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Guide.Name&quot;&gt;
             &lt;summary&gt;
-            Tags in this network. NOT YET IMPLEMENTED
+            The name of this guide
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_TAGS_DATA&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Guide.FullName&quot;&gt;
             &lt;summary&gt;
-            View data about one tag.
+            The guide's full name.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_USERS_ALL&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Guide.MugshotUrl&quot;&gt;
             &lt;summary&gt;
-            Users in this network.
+            The URL of this guide's picture.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_USERS_SINGLE&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Guide.WebUrl&quot;&gt;
             &lt;summary&gt;
-            View data about one user. 	
+            The URL for viewing this object on the main Yammer website.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_USERS_CURRENT&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.Type&quot;&gt;
             &lt;summary&gt;
-            Alias to /api/v1/users/current user's id.format.
+            The object type.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_GROUP_JOIN&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.Id&quot;&gt;
             &lt;summary&gt;
-            Join a group.
+            The ID number for this object. Note that IDs are not unique across all object types: 
+            there may be a user and tag with the same numerical ID.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_GROUP_RESIGN&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.Name&quot;&gt;
             &lt;summary&gt;
-            Leave a group.
+            The username of this user.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_RELATIONSHIPS_ALL&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.FullName&quot;&gt;
             &lt;summary&gt;
-            Show org chart relationships.
+            The user's full name.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_RELATIONSHIPS_CREATE&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.MugshotUrl&quot;&gt;
             &lt;summary&gt;
-            Add an org chart relationship.
+            The URL of this user's picture.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_RELATIONSHIPS_DELETE&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.Url&quot;&gt;
             &lt;summary&gt;
-            Remove a relationship.
+            The API resource for fetching this object.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUGGESTIONS_SHOW_ALL&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.WebUrl&quot;&gt;
             &lt;summary&gt;
-            Show suggested groups and users. 
+            The URL for viewing this object on the main Yammer website.
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUGGESTIONS_SHOW_USERS&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.JobTitle&quot;&gt;
             &lt;summary&gt;
-            Show only suggested users. 
+            User's job title
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUGGESTIONS_SHOW_GROUPS&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.Contact&quot;&gt;
             &lt;summary&gt;
-            Show only suggested groups. 	
+            User's contact information
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUGGESTIONS_DECLINE&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.NetworkId&quot;&gt;
             &lt;summary&gt;
-            Decline a suggestion.
+            The network id of the user
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUBSCRIPTIONS_TO_USER&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.HireDate&quot;&gt;
             &lt;summary&gt;
-            Check to see if you are subscribed to the user of the given id.
+            User's date of hire
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUBSCRIPTIONS_TO_TAG&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.NetworkName&quot;&gt;
             &lt;summary&gt;
-            Check to see if you are subscribed to the tag of the given id. 
+            The network name of the user
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUBSCRIPTIONS_SUBSCRIBE&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.Stats&quot;&gt;
             &lt;summary&gt;
-            Subscribe to a user or tag.
+            User's stats
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_SUBSCRIPTIONS_UNSUBSCRIBE&quot;&gt;
+        &lt;member name=&quot;P:Yammer.User.Location&quot;&gt;
             &lt;summary&gt;
-            Unsubscribe to a user or tag.
+            User location
             &lt;/summary&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;F:Yammer.Resources.YAMMER_AUTOCOMPLETE&quot;&gt;
+        &lt;member name=&quot;P:Yammer.Body.Plain&quot;&gt;
             &lt;summary&gt;
-            Return typeahead suggestions for the prefix passed
+            A plaintext version of the message body.
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;P:Yammer.Body.Parsed&quot;&gt;
+            &lt;summary&gt;
+            A version of the message body with #tags and @users replaced by [[object:id]]. 
+            This is not present in the reference version of a message.
             &lt;/summary&gt;
         &lt;/member&gt;
     &lt;/members&gt;</diff>
      <filename>Yammer Framework/Yammer/bin/Release/Yammer.XML</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/bin/Release/Yammer.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/bin/Release/Yammer.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/bin/Release/oAuth.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/bin/Release/oAuth.pdb</filename>
    </modified>
    <modified>
      <diff>@@ -4,49 +4,6 @@
         &lt;name&gt;oAuth&lt;/name&gt;
     &lt;/assembly&gt;
     &lt;members&gt;
-        &lt;member name=&quot;T:OAuth.Rfc3986&quot;&gt;
-            &lt;summary&gt;
-            Performs RFC 3986 encoding and decoding.
-            http://www.apps.ietf.org/rfc/rfc3986.html
-            &lt;/summary&gt;
-        &lt;/member&gt;
-        &lt;member name=&quot;M:OAuth.Rfc3986.EncodeAndJoin(System.Collections.Specialized.NameValueCollection)&quot;&gt;
-            &lt;summary&gt;
-            Join the name-value pairs into a string seperated with ampersands.
-            Each name and value is first RFC 3986 encoded and values are separated
-            from names with equal signs.
-            &lt;/summary&gt;
-            &lt;param name=&quot;values&quot;&gt;The name value collection to encode and join&lt;/param&gt;
-            &lt;returns&gt;An RFC 3986 compliant string&lt;/returns&gt;
-        &lt;/member&gt;
-        &lt;member name=&quot;M:OAuth.Rfc3986.SplitAndDecode(System.String)&quot;&gt;
-            &lt;summary&gt;
-            Splits a ampersand-separated list of key-value pairs, decodes the keys and 
-            values, and adds them to a NameValueCollection. Keys and values are separated
-            by equals signs.
-            &lt;/summary&gt;
-            &lt;param name=&quot;input&quot;&gt;The key-value pair list&lt;/param&gt;
-            &lt;returns&gt;A name value collection, which may be empty.&lt;/returns&gt;
-            &lt;exception cref=&quot;T:System.FormatException&quot;&gt;
-            If the string is not a series of key-value pairs separated by ampersands,
-            or if one of the keys is null or empty, or if one of the keys or values is 
-            not properly encoded.
-            &lt;/exception&gt;
-        &lt;/member&gt;
-        &lt;member name=&quot;M:OAuth.Rfc3986.Encode(System.String)&quot;&gt;
-            &lt;summary&gt;
-            Perform RFC 3986 Percent-encoding on a string.
-            &lt;/summary&gt;
-            &lt;param name=&quot;input&quot;&gt;The input string&lt;/param&gt;
-            &lt;returns&gt;The RFC 3986 Percent-encoded string&lt;/returns&gt;
-        &lt;/member&gt;
-        &lt;member name=&quot;M:OAuth.Rfc3986.Decode(System.String)&quot;&gt;
-            &lt;summary&gt;
-            Perform RFC 3986 Percent-decoding on a string.
-            &lt;/summary&gt;
-            &lt;param name=&quot;input&quot;&gt;The input RFC 3986 Percent-encoded string&lt;/param&gt;
-            &lt;returns&gt;The decoded string&lt;/returns&gt;
-        &lt;/member&gt;
         &lt;member name=&quot;M:OAuth.OAuthBase.ComputeHash(System.Security.Cryptography.HashAlgorithm,System.String)&quot;&gt;
             &lt;summary&gt;
             Helper function to compute a hash value
@@ -149,5 +106,48 @@
             Comparer class used to perform the sorting of the query parameters
             &lt;/summary&gt;
         &lt;/member&gt;
+        &lt;member name=&quot;T:OAuth.Rfc3986&quot;&gt;
+            &lt;summary&gt;
+            Performs RFC 3986 encoding and decoding.
+            http://www.apps.ietf.org/rfc/rfc3986.html
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:OAuth.Rfc3986.EncodeAndJoin(System.Collections.Specialized.NameValueCollection)&quot;&gt;
+            &lt;summary&gt;
+            Join the name-value pairs into a string seperated with ampersands.
+            Each name and value is first RFC 3986 encoded and values are separated
+            from names with equal signs.
+            &lt;/summary&gt;
+            &lt;param name=&quot;values&quot;&gt;The name value collection to encode and join&lt;/param&gt;
+            &lt;returns&gt;An RFC 3986 compliant string&lt;/returns&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:OAuth.Rfc3986.SplitAndDecode(System.String)&quot;&gt;
+            &lt;summary&gt;
+            Splits a ampersand-separated list of key-value pairs, decodes the keys and 
+            values, and adds them to a NameValueCollection. Keys and values are separated
+            by equals signs.
+            &lt;/summary&gt;
+            &lt;param name=&quot;input&quot;&gt;The key-value pair list&lt;/param&gt;
+            &lt;returns&gt;A name value collection, which may be empty.&lt;/returns&gt;
+            &lt;exception cref=&quot;T:System.FormatException&quot;&gt;
+            If the string is not a series of key-value pairs separated by ampersands,
+            or if one of the keys is null or empty, or if one of the keys or values is 
+            not properly encoded.
+            &lt;/exception&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:OAuth.Rfc3986.Encode(System.String)&quot;&gt;
+            &lt;summary&gt;
+            Perform RFC 3986 Percent-encoding on a string.
+            &lt;/summary&gt;
+            &lt;param name=&quot;input&quot;&gt;The input string&lt;/param&gt;
+            &lt;returns&gt;The RFC 3986 Percent-encoded string&lt;/returns&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:OAuth.Rfc3986.Decode(System.String)&quot;&gt;
+            &lt;summary&gt;
+            Perform RFC 3986 Percent-decoding on a string.
+            &lt;/summary&gt;
+            &lt;param name=&quot;input&quot;&gt;The input RFC 3986 Percent-encoded string&lt;/param&gt;
+            &lt;returns&gt;The decoded string&lt;/returns&gt;
+        &lt;/member&gt;
     &lt;/members&gt;
 &lt;/doc&gt;</diff>
      <filename>Yammer Framework/Yammer/bin/Release/oAuth.xml</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/obj/Debug/Refactor/Yammer.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/obj/Debug/ResolveAssemblyReference.cache</filename>
    </modified>
    <modified>
      <diff>@@ -1,28 +1,36 @@
-C:\ContextMenu\CuttingEdge0502\ContextMenu\Yammer\Yammer\obj\Debug\ResolveAssemblyReference.cache
-C:\ContextMenu\CuttingEdge0502\ContextMenu\Yammer\Yammer\bin\Debug\Yammer.dll
-C:\ContextMenu\CuttingEdge0502\ContextMenu\Yammer\Yammer\bin\Debug\Yammer.pdb
-C:\ContextMenu\CuttingEdge0502\ContextMenu\Yammer\Yammer\obj\Debug\Yammer.dll
-C:\ContextMenu\CuttingEdge0502\ContextMenu\Yammer\Yammer\obj\Debug\Yammer.pdb
-C:\ContextMenu\CuttingEdge0502\ContextMenu\Yammer\Yammer\bin\Debug\oAuth.dll
-C:\ContextMenu\CuttingEdge0502\ContextMenu\Yammer\Yammer\bin\Debug\oAuth.pdb
-C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\bin\Debug\Yammer.dll
-C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\bin\Debug\Yammer.pdb
-C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\obj\Debug\ResolveAssemblyReference.cache
-C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\obj\Debug\Yammer.dll
-C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\obj\Debug\Yammer.pdb
-C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\bin\Debug\oAuth.dll
-C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\bin\Debug\oAuth.pdb
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\bin\Debug\Yammer.dll
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\bin\Debug\Yammer.pdb
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\obj\Debug\ResolveAssemblyReference.cache
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\obj\Debug\Yammer.dll
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\obj\Debug\Yammer.pdb
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\bin\Debug\oAuth.dll
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\bin\Debug\oAuth.pdb
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\bin\Debug\Yammer.dll
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\bin\Debug\Yammer.pdb
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\bin\Debug\oAuth.dll
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\bin\Debug\oAuth.pdb
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\obj\Debug\ResolveAssemblyReference.cache
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\obj\Debug\Yammer.dll
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\obj\Debug\Yammer.pdb
+C:\Documents and Settings\Kevin\Desktop\Yammer\Yammer\bin\Debug\Yammer.dll
+C:\Documents and Settings\Kevin\Desktop\Yammer\Yammer\bin\Debug\Yammer.pdb
+C:\Documents and Settings\Kevin\Desktop\Yammer\Yammer\obj\Debug\ResolveAssemblyReference.cache
+C:\Documents and Settings\Kevin\Desktop\Yammer\Yammer\obj\Debug\Yammer.dll
+C:\Documents and Settings\Kevin\Desktop\Yammer\Yammer\obj\Debug\Yammer.pdb
+C:\Documents and Settings\Kevin\Desktop\Yammer\Yammer\bin\Debug\oAuth.dll
+C:\Documents and Settings\Kevin\Desktop\Yammer\Yammer\bin\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\Yammer.dll
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\Yammer.pdb
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\oAuth.dll
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Debug\ResolveAssemblyReference.cache
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Debug\Yammer.dll
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Debug\Yammer.pdb
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\Yammer.dll
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\Yammer.pdb
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\oAuth.dll
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\oAuth.pdb
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Debug\ResolveAssemblyReference.cache
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Debug\Yammer.dll
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Debug\Yammer.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\Yammer.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\Yammer.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\oAuth.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Debug\ResolveAssemblyReference.cache
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Debug\Yammer.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Debug\Yammer.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Debug\Yammer.dll.config
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\Yammer\bin\Debug\Yammer.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\Yammer\bin\Debug\Yammer.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\Yammer\bin\Debug\oAuth.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\Yammer\bin\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\Yammer\obj\Debug\ResolveAssemblyReference.cache
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\Yammer\obj\Debug\Yammer.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\Yammer\obj\Debug\Yammer.pdb</diff>
      <filename>Yammer Framework/Yammer/obj/Debug/Yammer.csproj.FileListAbsolute.txt</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/obj/Debug/Yammer.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/obj/Debug/Yammer.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/obj/Release/ResolveAssemblyReference.cache</filename>
    </modified>
    <modified>
      <diff>@@ -1,24 +1,10 @@
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\bin\Release\Yammer.dll
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\bin\Release\Yammer.pdb
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\obj\Release\ResolveAssemblyReference.cache
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\obj\Release\Yammer.dll
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\obj\Release\Yammer.pdb
-C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\Yammer\bin\Release\Yammer.XML
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\bin\Release\Yammer.XML
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\bin\Release\Yammer.dll
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\bin\Release\Yammer.pdb
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\bin\Release\oAuth.dll
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\bin\Release\oAuth.pdb
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\bin\Release\oAuth.xml
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\obj\Release\ResolveAssemblyReference.cache
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\obj\Release\Yammer.dll
-C:\Documents and Settings\Kevin\Yammer Framework\Yammer\obj\Release\Yammer.pdb
-C:\Documents and Settings\Kevin\yammer.net\Yammer Framework\Yammer\bin\Release\Yammer.dll
-C:\Documents and Settings\Kevin\yammer.net\Yammer Framework\Yammer\bin\Release\Yammer.pdb
-C:\Documents and Settings\Kevin\yammer.net\Yammer Framework\Yammer\bin\Release\oAuth.dll
-C:\Documents and Settings\Kevin\yammer.net\Yammer Framework\Yammer\bin\Release\oAuth.pdb
-C:\Documents and Settings\Kevin\yammer.net\Yammer Framework\Yammer\bin\Release\oAuth.xml
-C:\Documents and Settings\Kevin\yammer.net\Yammer Framework\Yammer\obj\Release\ResolveAssemblyReference.cache
-C:\Documents and Settings\Kevin\yammer.net\Yammer Framework\Yammer\obj\Release\Yammer.dll
-C:\Documents and Settings\Kevin\yammer.net\Yammer Framework\Yammer\obj\Release\Yammer.pdb
-C:\Documents and Settings\Kevin\yammer.net\Yammer Framework\Yammer\bin\Release\Yammer.XML
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Release\Yammer.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Release\Yammer.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Release\oAuth.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Release\oAuth.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Release\oAuth.xml
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Release\ResolveAssemblyReference.cache
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Release\Yammer.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\obj\Release\Yammer.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Release\Yammer.dll.config
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\Yammer\bin\Release\Yammer.XML</diff>
      <filename>Yammer Framework/Yammer/obj/Release/Yammer.csproj.FileListAbsolute.txt</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/obj/Release/Yammer.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/Yammer/obj/Release/Yammer.pdb</filename>
    </modified>
    <modified>
      <diff>@@ -333,7 +333,13 @@ namespace OAuth
             switch (signatureType)
             {
                 case SignatureTypes.PLAINTEXT:
-                    return HttpUtility.UrlEncode(string.Format(&quot;{0}&amp;{1}&quot;, consumerSecret, tokenSecret));
+                    return consumerSecret + &quot;&amp;&quot; + tokenSecret;
+                    //return HttpUtility.UrlEncode(string.Format(&quot;{0}&amp;{1}&quot;, consumerSecret, tokenSecret));
+                    //%26 + secret
+
+                    //return HttpUtility.UrlEncode(tokenSecret + &quot;@&quot;) ;
+                    //return GenerateSignatureBase(url, consumerKey, token, tokenSecret, httpMethod, timeStamp, nonce, PlainTextSignatureType, out normalizedUrl, out normalizedRequestParameters);
+
                 case SignatureTypes.HMACSHA1:
                     string signatureBase = GenerateSignatureBase(url, consumerKey, token, tokenSecret, httpMethod, timeStamp, nonce, HMACSHA1SignatureType, out normalizedUrl, out normalizedRequestParameters);
 </diff>
      <filename>Yammer Framework/oAuth/OAuthBase.cs</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/oAuth/bin/Debug/oAuth.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/oAuth/bin/Debug/oAuth.pdb</filename>
    </modified>
    <modified>
      <diff>@@ -4,49 +4,6 @@
         &lt;name&gt;oAuth&lt;/name&gt;
     &lt;/assembly&gt;
     &lt;members&gt;
-        &lt;member name=&quot;T:OAuth.Rfc3986&quot;&gt;
-            &lt;summary&gt;
-            Performs RFC 3986 encoding and decoding.
-            http://www.apps.ietf.org/rfc/rfc3986.html
-            &lt;/summary&gt;
-        &lt;/member&gt;
-        &lt;member name=&quot;M:OAuth.Rfc3986.EncodeAndJoin(System.Collections.Specialized.NameValueCollection)&quot;&gt;
-            &lt;summary&gt;
-            Join the name-value pairs into a string seperated with ampersands.
-            Each name and value is first RFC 3986 encoded and values are separated
-            from names with equal signs.
-            &lt;/summary&gt;
-            &lt;param name=&quot;values&quot;&gt;The name value collection to encode and join&lt;/param&gt;
-            &lt;returns&gt;An RFC 3986 compliant string&lt;/returns&gt;
-        &lt;/member&gt;
-        &lt;member name=&quot;M:OAuth.Rfc3986.SplitAndDecode(System.String)&quot;&gt;
-            &lt;summary&gt;
-            Splits a ampersand-separated list of key-value pairs, decodes the keys and 
-            values, and adds them to a NameValueCollection. Keys and values are separated
-            by equals signs.
-            &lt;/summary&gt;
-            &lt;param name=&quot;input&quot;&gt;The key-value pair list&lt;/param&gt;
-            &lt;returns&gt;A name value collection, which may be empty.&lt;/returns&gt;
-            &lt;exception cref=&quot;T:System.FormatException&quot;&gt;
-            If the string is not a series of key-value pairs separated by ampersands,
-            or if one of the keys is null or empty, or if one of the keys or values is 
-            not properly encoded.
-            &lt;/exception&gt;
-        &lt;/member&gt;
-        &lt;member name=&quot;M:OAuth.Rfc3986.Encode(System.String)&quot;&gt;
-            &lt;summary&gt;
-            Perform RFC 3986 Percent-encoding on a string.
-            &lt;/summary&gt;
-            &lt;param name=&quot;input&quot;&gt;The input string&lt;/param&gt;
-            &lt;returns&gt;The RFC 3986 Percent-encoded string&lt;/returns&gt;
-        &lt;/member&gt;
-        &lt;member name=&quot;M:OAuth.Rfc3986.Decode(System.String)&quot;&gt;
-            &lt;summary&gt;
-            Perform RFC 3986 Percent-decoding on a string.
-            &lt;/summary&gt;
-            &lt;param name=&quot;input&quot;&gt;The input RFC 3986 Percent-encoded string&lt;/param&gt;
-            &lt;returns&gt;The decoded string&lt;/returns&gt;
-        &lt;/member&gt;
         &lt;member name=&quot;M:OAuth.OAuthBase.ComputeHash(System.Security.Cryptography.HashAlgorithm,System.String)&quot;&gt;
             &lt;summary&gt;
             Helper function to compute a hash value
@@ -149,5 +106,48 @@
             Comparer class used to perform the sorting of the query parameters
             &lt;/summary&gt;
         &lt;/member&gt;
+        &lt;member name=&quot;T:OAuth.Rfc3986&quot;&gt;
+            &lt;summary&gt;
+            Performs RFC 3986 encoding and decoding.
+            http://www.apps.ietf.org/rfc/rfc3986.html
+            &lt;/summary&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:OAuth.Rfc3986.EncodeAndJoin(System.Collections.Specialized.NameValueCollection)&quot;&gt;
+            &lt;summary&gt;
+            Join the name-value pairs into a string seperated with ampersands.
+            Each name and value is first RFC 3986 encoded and values are separated
+            from names with equal signs.
+            &lt;/summary&gt;
+            &lt;param name=&quot;values&quot;&gt;The name value collection to encode and join&lt;/param&gt;
+            &lt;returns&gt;An RFC 3986 compliant string&lt;/returns&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:OAuth.Rfc3986.SplitAndDecode(System.String)&quot;&gt;
+            &lt;summary&gt;
+            Splits a ampersand-separated list of key-value pairs, decodes the keys and 
+            values, and adds them to a NameValueCollection. Keys and values are separated
+            by equals signs.
+            &lt;/summary&gt;
+            &lt;param name=&quot;input&quot;&gt;The key-value pair list&lt;/param&gt;
+            &lt;returns&gt;A name value collection, which may be empty.&lt;/returns&gt;
+            &lt;exception cref=&quot;T:System.FormatException&quot;&gt;
+            If the string is not a series of key-value pairs separated by ampersands,
+            or if one of the keys is null or empty, or if one of the keys or values is 
+            not properly encoded.
+            &lt;/exception&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:OAuth.Rfc3986.Encode(System.String)&quot;&gt;
+            &lt;summary&gt;
+            Perform RFC 3986 Percent-encoding on a string.
+            &lt;/summary&gt;
+            &lt;param name=&quot;input&quot;&gt;The input string&lt;/param&gt;
+            &lt;returns&gt;The RFC 3986 Percent-encoded string&lt;/returns&gt;
+        &lt;/member&gt;
+        &lt;member name=&quot;M:OAuth.Rfc3986.Decode(System.String)&quot;&gt;
+            &lt;summary&gt;
+            Perform RFC 3986 Percent-decoding on a string.
+            &lt;/summary&gt;
+            &lt;param name=&quot;input&quot;&gt;The input RFC 3986 Percent-encoded string&lt;/param&gt;
+            &lt;returns&gt;The decoded string&lt;/returns&gt;
+        &lt;/member&gt;
     &lt;/members&gt;
 &lt;/doc&gt;</diff>
      <filename>Yammer Framework/oAuth/bin/Release/oAuth.XML</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/oAuth/bin/Release/oAuth.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/oAuth/bin/Release/oAuth.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/oAuth/obj/Debug/Refactor/oAuth.dll</filename>
    </modified>
    <modified>
      <diff>@@ -13,8 +13,33 @@ C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\
 C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\oAuth\obj\Debug\ResolveAssemblyReference.cache
 C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\oAuth\obj\Debug\oAuth.dll
 C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\oAuth\obj\Debug\oAuth.pdb
-C:\Documents and Settings\Kevin\Yammer Framework\oAuth\bin\Debug\oAuth.dll
-C:\Documents and Settings\Kevin\Yammer Framework\oAuth\bin\Debug\oAuth.pdb
-C:\Documents and Settings\Kevin\Yammer Framework\oAuth\obj\Debug\ResolveAssemblyReference.cache
-C:\Documents and Settings\Kevin\Yammer Framework\oAuth\obj\Debug\oAuth.dll
-C:\Documents and Settings\Kevin\Yammer Framework\oAuth\obj\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin\Desktop\Yammer\oAuth\bin\Debug\oAuth.dll
+C:\Documents and Settings\Kevin\Desktop\Yammer\oAuth\bin\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin\Desktop\Yammer\oAuth\obj\Debug\ResolveAssemblyReference.cache
+C:\Documents and Settings\Kevin\Desktop\Yammer\oAuth\obj\Debug\oAuth.dll
+C:\Documents and Settings\Kevin\Desktop\Yammer\oAuth\obj\Debug\oAuth.pdb
+C:\Documents and Settings\kdavie\Desktop\Yammer\oAuth\bin\Debug\oAuth.dll
+C:\Documents and Settings\kdavie\Desktop\Yammer\oAuth\bin\Debug\oAuth.pdb
+C:\Documents and Settings\kdavie\Desktop\Yammer\oAuth\obj\Debug\ResolveAssemblyReference.cache
+C:\Documents and Settings\kdavie\Desktop\Yammer\oAuth\obj\Debug\oAuth.dll
+C:\Documents and Settings\kdavie\Desktop\Yammer\oAuth\obj\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\bin\Debug\oAuth.dll
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\bin\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Debug\ResolveAssemblyReference.cache
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Debug\oAuth.dll
+C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Debug\oAuth.pdb
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\bin\Debug\oAuth.dll
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\bin\Debug\oAuth.pdb
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Debug\ResolveAssemblyReference.cache
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Debug\oAuth.dll
+C:\Users\Kevin\Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\bin\Debug\oAuth.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\bin\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Debug\ResolveAssemblyReference.cache
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Debug\oAuth.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\oAuth\bin\Debug\oAuth.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\oAuth\bin\Debug\oAuth.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\oAuth\obj\Debug\ResolveAssemblyReference.cache
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\oAuth\obj\Debug\oAuth.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerFramework\oAuth\obj\Debug\oAuth.pdb</diff>
      <filename>Yammer Framework/oAuth/obj/Debug/oAuth.csproj.FileListAbsolute.txt</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/oAuth/obj/Debug/oAuth.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/oAuth/obj/Debug/oAuth.pdb</filename>
    </modified>
    <modified>
      <diff>@@ -4,9 +4,24 @@ C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\
 C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\oAuth\obj\Release\oAuth.dll
 C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\oAuth\obj\Release\oAuth.pdb
 C:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Yammer\oAuth\bin\Release\oAuth.XML
-C:\Documents and Settings\Kevin\Yammer Framework\oAuth\bin\Release\oAuth.XML
-C:\Documents and Settings\Kevin\Yammer Framework\oAuth\bin\Release\oAuth.dll
-C:\Documents and Settings\Kevin\Yammer Framework\oAuth\bin\Release\oAuth.pdb
-C:\Documents and Settings\Kevin\Yammer Framework\oAuth\obj\Release\ResolveAssemblyReference.cache
-C:\Documents and Settings\Kevin\Yammer Framework\oAuth\obj\Release\oAuth.dll
-C:\Documents and Settings\Kevin\Yammer Framework\oAuth\obj\Release\oAuth.pdb
+C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\oAuth\bin\Release\oAuth.dll
+C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\oAuth\bin\Release\oAuth.pdb
+C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\oAuth\obj\Release\ResolveAssemblyReference.cache
+C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\oAuth\obj\Release\oAuth.dll
+C:\Documents and Settings\kdavie\My Documents\Visual Studio 2008\Projects\Yammer\oAuth\obj\Release\oAuth.pdb
+C:\Documents and Settings\Kevin\Desktop\Yammer\oAuth\bin\Release\oAuth.dll
+C:\Documents and Settings\Kevin\Desktop\Yammer\oAuth\bin\Release\oAuth.pdb
+C:\Documents and Settings\Kevin\Desktop\Yammer\oAuth\obj\Release\ResolveAssemblyReference.cache
+C:\Documents and Settings\Kevin\Desktop\Yammer\oAuth\obj\Release\oAuth.dll
+C:\Documents and Settings\Kevin\Desktop\Yammer\oAuth\obj\Release\oAuth.pdb
+C:\Documents and Settings\kdavie\Desktop\Yammer\oAuth\bin\Release\oAuth.dll
+C:\Documents and Settings\kdavie\Desktop\Yammer\oAuth\bin\Release\oAuth.pdb
+C:\Documents and Settings\kdavie\Desktop\Yammer\oAuth\obj\Release\ResolveAssemblyReference.cache
+C:\Documents and Settings\kdavie\Desktop\Yammer\oAuth\obj\Release\oAuth.dll
+C:\Documents and Settings\kdavie\Desktop\Yammer\oAuth\obj\Release\oAuth.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\bin\Release\oAuth.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\bin\Release\oAuth.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Release\ResolveAssemblyReference.cache
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Release\oAuth.dll
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\obj\Release\oAuth.pdb
+C:\Documents and Settings\Kevin Davie\My Documents\Visual Studio 2008\Projects\YammerADSync\oAuth\bin\Release\oAuth.XML</diff>
      <filename>Yammer Framework/oAuth/obj/Release/oAuth.csproj.FileListAbsolute.txt</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/oAuth/obj/Release/oAuth.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Yammer Framework/oAuth/obj/Release/oAuth.pdb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>Yammer Framework/Yammer/Yammer.sln</filename>
    </removed>
    <removed>
      <filename>Yammer Framework/Yammer/Yammer.suo</filename>
    </removed>
    <removed>
      <filename>Yammer Framework/Yammer/bin/Debug/BandObjectLib.dll</filename>
    </removed>
    <removed>
      <filename>Yammer Framework/Yammer/bin/Debug/Interop.SHDocVw.dll</filename>
    </removed>
    <removed>
      <filename>Yammer Framework/YammerFramework.chm</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>8d29e806b2657a6d80576369ce5bec7193dbfa05</id>
    </parent>
  </parents>
  <author>
    <name>unknown</name>
    <email>Kevin Davie@.(none)</email>
  </author>
  <url>http://github.com/kdavie/yammer.net/commit/3c40b46775732ced0d75788c6231627471db646d</url>
  <id>3c40b46775732ced0d75788c6231627471db646d</id>
  <committed-date>2009-07-24T13:05:06-07:00</committed-date>
  <authored-date>2009-07-24T13:05:06-07:00</authored-date>
  <message>major update</message>
  <tree>1c76050266e565bfd918ed96b40cf36d14068249</tree>
  <committer>
    <name>unknown</name>
    <email>Kevin Davie@.(none)</email>
  </committer>
</commit>
