Index: /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgAddRequestProxyResponse.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgAddRequestProxyResponse.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgAddRequestProxyResponse.cs	(revision 7160)
@@ -10,10 +10,10 @@
     [Serializable()]
     [XmlRoot(ElementName = "rsp")]
-    internal class PwgAddRequestProxyResponse : PwgBaseProxyReponse
+    public class PwgAddRequestProxyResponse : PwgBaseProxyReponse
     {
         [XmlElement(ElementName="info")]
-        internal String Message { get; set; }
+        public String Message { get; set; }
         [XmlElement(ElementName = "id")]
-        internal Int32 NewId { get; set; }
+        public Int32 NewId { get; set; }
 
     }
Index: /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgBaseProxyReponse.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgBaseProxyReponse.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgBaseProxyReponse.cs	(revision 7160)
@@ -10,11 +10,11 @@
     [Serializable()]
     [XmlRoot(ElementName = "err")]
-    internal class PwgBaseProxyReponseError
+    public class PwgBaseProxyReponseError
     {
         [XmlAttribute(AttributeName = "code")]
-        internal Int32 Code { get; set; }
+        public Int32 Code { get; set; }
 
         [XmlAttribute(AttributeName = "msg")]
-        internal String Message { get; set; }
+        public String Message { get; set; }
     }
 
@@ -22,11 +22,11 @@
     [Serializable()]
     [XmlRoot(ElementName = "rsp")]
-    internal abstract class PwgBaseProxyReponse
+    public abstract class PwgBaseProxyReponse
     {
         [XmlAttribute(AttributeName="stat")]
-        internal PwgBaseProxyReponseRetourEnum Retour { get; set; }
+        public PwgBaseProxyReponseRetourEnum Retour { get; set; }
 
         [XmlElement(ElementName="err")]
-        internal PwgBaseProxyReponseError Erreur { get; set; }
+        public PwgBaseProxyReponseError Erreur { get; set; }
 
     }
Index: /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgBaseProxyReponseRetourEnum.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgBaseProxyReponseRetourEnum.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgBaseProxyReponseRetourEnum.cs	(revision 7160)
@@ -9,5 +9,5 @@
     [Serializable()]
     [XmlRoot(ElementName = "PwgBaseProxyReponseRetourEnum")]
-    internal enum PwgBaseProxyReponseRetourEnum : int
+    public enum PwgBaseProxyReponseRetourEnum : int
     {
         [XmlEnum("unknow")]
Index: /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgCategoriesProxyResponse.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgCategoriesProxyResponse.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgCategoriesProxyResponse.cs	(revision 7160)
@@ -10,31 +10,31 @@
     [Serializable()]
     [XmlRoot(ElementName = "category")]
-    internal class PwgCategoryProxyResponse
+    public class PwgCategoryProxyResponse
     {
         [XmlAttribute(AttributeName = "id")]
-        internal Int32 Id { get; set; }
+        public Int32 Id { get; set; }
         [XmlElement(ElementName = "uppercats")]
-        internal String UpperCategoryId { get; set; }
+        public String UpperCategoryId { get; set; }
         [XmlElement (ElementName = "name")]
-        internal String Name { get; set; }
+        public String Name { get; set; }
         [XmlAttribute(AttributeName = "url")]
-        internal String Url { get; set; }
+        public String Url { get; set; }
         [XmlAttribute(AttributeName = "nb_images")]
-        internal Int64 ImagesCount { get; set; }
+        public Int64 ImagesCount { get; set; }
         [XmlAttribute(AttributeName = "total_nb_images")]
-        internal Int64 DeepImagesCount { get; set; }
+        public Int64 DeepImagesCount { get; set; }
         [XmlAttribute(AttributeName = "nb_categories")]
-        internal Int64 SubCategoriesCount { get; set; }
+        public Int64 SubCategoriesCount { get; set; }
         [XmlAttribute(AttributeName = "max_date_last")]
-        internal String LastDate { get; set; }
+        public String LastDate { get; set; }
     }
 
     [Serializable()]
     [XmlRoot(ElementName = "rsp")]
-    internal class PwgCategoriesProxyResponse : PwgBaseProxyReponse
+    public class PwgCategoriesProxyResponse : PwgBaseProxyReponse
     {
         [XmlArray("categories")]
         [XmlArrayItem("category")]
-        internal PwgCategoryProxyResponse[] Categories { get; set; }
+        public PwgCategoryProxyResponse[] Categories { get; set; }
     }
 }
Index: /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgImagesProxyResponse.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgImagesProxyResponse.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgImagesProxyResponse.cs	(revision 7160)
@@ -11,42 +11,42 @@
     [Serializable()]
     [XmlRoot(ElementName = "rsp")]
-    internal class PwgImageRateProxyResponse : PwgBaseProxyReponse
+    public class PwgImageRateProxyResponse : PwgBaseProxyReponse
     {
         [XmlElement("count")]
-        internal Int32 Count { get; set; }
+        public Int32 Count { get; set; }
         [XmlElement("average")]
-        internal String Average { get; set; }
+        public String Average { get; set; }
         [XmlElement("stdev")]
-        internal String Stdev { get; set; }
+        public String Stdev { get; set; }
     }
 
     [Serializable()]
     [XmlRoot(ElementName = "categorie")]
-    internal class PwgImageProxyResponse
+    public class PwgImageProxyResponse
     {
         [XmlAttribute(AttributeName = "id")]
-        internal Int32 Id { get; set; }
+        public Int32 Id { get; set; }
         [XmlAttribute(AttributeName = "width")]
-        internal Int32 Width { get; set; }
+        public Int32 Width { get; set; }
         [XmlAttribute(AttributeName = "height")]
-        internal Int32 Height { get; set; }
+        public Int32 Height { get; set; }
         [XmlAttribute(AttributeName = "file")]
-        internal String File { get; set; }
+        public String File { get; set; }
         [XmlAttribute(AttributeName = "tn_url")]
-        internal String UrlThunb { get; set; }
+        public String UrlThunb { get; set; }
         [XmlAttribute(AttributeName = "element_url")]
-        internal String UrlElement { get; set; }
+        public String UrlElement { get; set; }
         [XmlAttribute(AttributeName = "high_url")]
-        internal String UrlHighDef { get; set; }
+        public String UrlHighDef { get; set; }
         [XmlAttribute(AttributeName = "hit")]
-        internal Int64 Counter { get; set; }
+        public Int64 Counter { get; set; }
 
         [XmlArray("tags")]
         [XmlArrayItem("tag")]
-        internal PwgTagProxyResponse[] Tags { get; set; }
+        public PwgTagProxyResponse[] Tags { get; set; }
 
         [XmlArray("categories")]
         [XmlArrayItem("category")]
-        internal PwgCategoryProxyResponse[] Categories { get; set; }
+        public PwgCategoryProxyResponse[] Categories { get; set; }
 
     }
@@ -54,15 +54,15 @@
     [Serializable()]
     [XmlRoot(ElementName = "images")]
-    internal class PwgImageListProxyResponse
+    public class PwgImageListProxyResponse
     {
         [XmlAttribute("page")]
-        internal Int32 Page { get; set; }
+        public Int32 Page { get; set; }
         [XmlAttribute("per_page")]
-        internal Int32 PerPage { get; set; }
+        public Int32 PerPage { get; set; }
         [XmlAttribute("count")]
-        internal Int32 Count { get; set; }
+        public Int32 Count { get; set; }
 
         [XmlElement("image", typeof(PwgImageProxyResponse))]
-        internal PwgImageProxyResponse[] Images { get; set; }
+        public PwgImageProxyResponse[] Images { get; set; }
 
 
@@ -71,8 +71,8 @@
     [Serializable()]
     [XmlRoot(ElementName = "rsp")]
-    internal class PwgImagesProxyResponse : PwgBaseProxyReponse
+    public class PwgImagesProxyResponse : PwgBaseProxyReponse
     {
         [XmlElement("images")]
-        internal PwgImageListProxyResponse ImageList { get; set; }
+        public PwgImageListProxyResponse ImageList { get; set; }
     }
 
Index: /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgSessionProxyResponse.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgSessionProxyResponse.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgSessionProxyResponse.cs	(revision 7160)
@@ -11,18 +11,18 @@
     [XmlRoot(ElementName = "rsp")]
 
-    internal class PwgSessionProxyResponse : PwgBaseProxyReponse
+    public class PwgSessionProxyResponse : PwgBaseProxyReponse
     {
         [XmlElement(ElementName = "username")]
-        internal String UserName { get; set; }
+        public String UserName { get; set; }
         [XmlElement(ElementName = "status")]
-        internal string Status { get; set; }
+        public string Status { get; set; }
         [XmlElement(ElementName = "template")]
-        internal String Template { get; set; }
+        public String Template { get; set; }
         [XmlElement(ElementName = "theme")]
-        internal String Theme { get; set; }
+        public String Theme { get; set; }
         [XmlElement(ElementName = "language")]
-        internal String Language { get; set; }
+        public String Language { get; set; }
         [XmlElement(ElementName = "charset")]
-        internal String CharSet { get; set; }    
+        public String CharSet { get; set; }    
     }
 }
Index: /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgTagsProxyResponse.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgTagsProxyResponse.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgTagsProxyResponse.cs	(revision 7160)
@@ -10,26 +10,26 @@
     [Serializable()]
     [XmlRoot(ElementName = "tag")]
-    internal class PwgTagProxyResponse
+    public class PwgTagProxyResponse
     {
         [XmlAttribute(AttributeName = "id")]
-        internal Int32 Id { get; set; }
+        public Int32 Id { get; set; }
         [XmlAttribute(AttributeName = "name")]
-        internal String Name { get; set; }
+        public String Name { get; set; }
         [XmlAttribute(AttributeName = "url_name")]
-        internal String UrlName { get; set; }
+        public String UrlName { get; set; }
         [XmlAttribute(AttributeName = "counter")]
-        internal Int64 Counter { get; set; }
+        public Int64 Counter { get; set; }
         [XmlAttribute(AttributeName = "url")]
-        internal String UrlTag { get; set; }
+        public String UrlTag { get; set; }
     }
 
     [Serializable()]
     [XmlRoot(ElementName = "rsp")]
-    internal class PwgTagsProxyResponse : PwgBaseProxyReponse
+    public class PwgTagsProxyResponse : PwgBaseProxyReponse
     {
         //[XmlElement(ElementName = "tags")]
         [XmlArray("tags")]
         [XmlArrayItem("tag")]
-        internal PwgTagProxyResponse[] Tags { get; set; }
+        public PwgTagProxyResponse[] Tags { get; set; }
     }
 }
Index: /extensions/PiwigoLib/PiwigoLib/Service/PwgSetupService.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Service/PwgSetupService.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoLib/Service/PwgSetupService.cs	(revision 7160)
@@ -34,6 +34,8 @@
                     PwgConfigProxy.PwgTimeOutInSecond = PwgTimeOutInSecond.Value;
                 }
-
-                PwgConfigProxy.PwgServeurUri = serverURI;
+                if (serverURI != null)
+                {
+                    PwgConfigProxy.PwgServeurUri = serverURI;
+                }
             }
             catch (PwgProxyException ex)
Index: /extensions/PiwigoLib/PiwigoWpf/App.xaml.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/App.xaml.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoWpf/App.xaml.cs	(revision 7160)
@@ -1,11 +1,6 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Configuration;
-using System.Data;
-using System.Linq;
-using System.Windows;
-using Com.Piwigo.Lib.Proxy;
+﻿using System.Windows;
+using System.Windows.Data;
+using Com.Piwigo.Lib.IService;
 using Com.Piwigo.Wpf.DTO;
-using System.Windows.Data;
 
 namespace Com.Piwigo.Wpf
@@ -20,23 +15,17 @@
         {
 
-            PwgConfigProxy.PwgUserAgent = "Com.Piwigo.Wpf.PiwigoWPF";
-            PwgConfigProxy.PwgServeurUriBuilder.Path = "phpwebgallery/ws.php";
-            PwgConfigProxy.PwgServeurUriBuilder.Scheme = "http://";
+            PwgServiceProvider.Instance.PwgSetupService.Setup( "Com.Piwigo.Wpf.PiwigoWPF", null, null);
 
-            PwgSessionWPF sess = (PwgSessionWPF)(this.Resources["Session"] as ObjectDataProvider).Data;
+            PwgModelManager.Instance.Session = (PwgSessionWPF)(this.Resources["Session"] as ObjectDataProvider).Data;
+            PwgModelManager.Instance.CategoryList = (PwgCategoryListWPF)(this.Resources["Categories"] as ObjectDataProvider).Data;
+            PwgModelManager.Instance.ImageList = (PwgImageListWPF)(this.Resources["Images"] as ObjectDataProvider).Data;
 
-            sess.ServeurName = global::Com.Piwigo.Wpf.Properties.Settings.Default.ServerNameData;
-            sess.UserName = global::Com.Piwigo.Wpf.Properties.Settings.Default.UserNameData;
-            sess.Password = global::Com.Piwigo.Wpf.Properties.Settings.Default.PwdData;
-            sess.SaveSetting = global::Com.Piwigo.Wpf.Properties.Settings.Default.SaveSettingData;
+            PwgModelManager.Instance.Session.ServeurName = global::Com.Piwigo.Wpf.Properties.Settings.Default.ServerNameData;
+            PwgModelManager.Instance.Session.UserName = global::Com.Piwigo.Wpf.Properties.Settings.Default.UserNameData;
+            PwgModelManager.Instance.Session.Password = global::Com.Piwigo.Wpf.Properties.Settings.Default.PwdData;
+            PwgModelManager.Instance.Session.SaveSetting = global::Com.Piwigo.Wpf.Properties.Settings.Default.SaveSettingData;
 
             MainWindow  mainWindow = new MainWindow();
             mainWindow.Show();
-
-            //mainWindow.Photos = (PhotoList)(this.Resources["Photos"] as ObjectDataProvider).Data;
-            //mainWindow.Photos.Path = "..\\..\\Photos";
-
-            //mainWindow.ShoppingCart = (PrintList)(this.Resources["ShoppingCart"] as ObjectDataProvider).Data;
-            
         }
 
Index: /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdConnect.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdConnect.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdConnect.cs	(revision 7160)
@@ -1,7 +1,9 @@
 ﻿using System;
 using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Input;
+using Com.Piwigo.Lib.IService;
+using Com.Piwigo.Wpf.DTO;
+using Com.Piwigo.Lib.DTO;
+using Com.Piwigo.Wpf.DTO.Helper;
+using Com.Piwigo.Wpf.Helper;
 
 namespace Com.Piwigo.Wpf.Command
@@ -11,10 +13,44 @@
         public override bool CanExecute(object parameter)
         {
-            return true;
+            Boolean retVal = false;
+            if ( AppHelper.IsInDesignModeStatic == true)
+            {
+                retVal = false;
+            }
+            else
+            {
+                if ((PwgModelManager.Instance.Session != null)
+                    & (PwgModelManager.Instance.Session.ServeurName != null))
+                {
+                    retVal = !String.IsNullOrWhiteSpace(PwgModelManager.Instance.Session.ServeurName);
+                }
+            }
+            return (retVal);
         }
 
         public override void Execute(object parameter)
         {
-            throw new NotImplementedException();
+            try {
+                Uri uriServer = new Uri(PwgModelManager.Instance.Session.ServeurName);
+
+                PwgServiceProvider.Instance.PwgSetupService.Setup(null, null, uriServer);
+                PwgSession sess = PwgServiceProvider.Instance.PwgSessionService.GetPwgSession();
+                sess = PwgServiceProvider.Instance.PwgSessionService.Login( PwgModelManager.Instance.Session.UserName,
+                                                                            PwgModelManager.Instance.Session.Password);
+
+                PwgSessionWPF sesWPF = PwgModelManager.Instance.Session;
+                PwgSessionWPFHelper.AddPwgSessionInfoToPwgSessionWPF(sess, ref sesWPF);
+
+                List<PwgCategory> lstCat = PwgServiceProvider.Instance.PwgCategoriesService.GetListOfCategory(null, false, (PwgModelManager.Instance.Session.Status == PwgSessionStatusEnum.Guest));
+                PwgCategoryListWPF lstCatWPF = PwgModelManager.Instance.CategoryList;
+
+                PwgCategoryListWPFHelper.ConvertPwgCategoryListToPwgCategoryListWPF(lstCat, ref lstCatWPF);
+            }
+            catch (PwgServiceException ex)
+            {
+                Console.WriteLine("Erreur " + ex.NumeroErr + " " + ex.MessageErr);
+                Console.WriteLine(ex.Message);
+            }
+
         }
     }
Index: /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdProvider.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdProvider.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdProvider.cs	(revision 7160)
@@ -7,5 +7,5 @@
 namespace Com.Piwigo.Wpf.Command
 {
-    public static sealed class PwgCmdProvider
+    public static class PwgCmdProvider
     {
         public static ICommand _pwgCmdConnect;
Index: /extensions/PiwigoLib/PiwigoWpf/DTO/Helper/PwgCategoryListWPFHelper.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/DTO/Helper/PwgCategoryListWPFHelper.cs	(revision 7160)
+++ /extensions/PiwigoLib/PiwigoWpf/DTO/Helper/PwgCategoryListWPFHelper.cs	(revision 7160)
@@ -0,0 +1,39 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Com.Piwigo.Lib.DTO;
+
+namespace Com.Piwigo.Wpf.DTO.Helper
+{
+    public static class PwgCategoryListWPFHelper
+    {
+        public static void AddPwgCategoryToList(    PwgCategory aPwgCategory,
+                                                ref PwgCategoryListWPF aPwgCategoryListWPF)
+        {
+            if (aPwgCategory != null)
+            {
+                if (aPwgCategoryListWPF == null)
+                {
+                    aPwgCategoryListWPF = new PwgCategoryListWPF();
+                }
+
+                PwgCategoryWPF pwgCat = new PwgCategoryWPF();
+                PwgCategoryWPFHelper.ConvertPwgCategoryToPwgCategoryWPF(aPwgCategory, ref pwgCat);
+
+                aPwgCategoryListWPF.Add(pwgCat);
+            }
+        }
+
+        public static void ConvertPwgCategoryListToPwgCategoryListWPF(List<PwgCategory> aPwgCategoryList, ref PwgCategoryListWPF aPwgCategoryListWPF)
+        {
+            if (aPwgCategoryList != null)
+            {
+            foreach (PwgCategory pwgCat in aPwgCategoryList)
+            {
+                AddPwgCategoryToList(pwgCat, ref aPwgCategoryListWPF);
+            }
+            }
+        }
+    }
+}
Index: /extensions/PiwigoLib/PiwigoWpf/DTO/Helper/PwgCategoryWPFHelper.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/DTO/Helper/PwgCategoryWPFHelper.cs	(revision 7160)
+++ /extensions/PiwigoLib/PiwigoWpf/DTO/Helper/PwgCategoryWPFHelper.cs	(revision 7160)
@@ -0,0 +1,45 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Com.Piwigo.Lib.DTO;
+
+namespace Com.Piwigo.Wpf.DTO.Helper
+{
+    public static class PwgCategoryWPFHelper
+    {
+        public static void ConvertPwgCategoryToPwgCategoryWPF(PwgCategory aPwgCategory,
+                                                       ref PwgCategoryWPF aPwgCategoryWPF)
+        {
+            if (aPwgCategory != null)
+            {
+                if (aPwgCategoryWPF == null)
+                {
+                    aPwgCategoryWPF = new PwgCategoryWPF();
+                }
+                aPwgCategoryWPF.DeepImagesCount = aPwgCategory.DeepImagesCount;
+                aPwgCategoryWPF.Id = aPwgCategory.Id;
+                aPwgCategoryWPF.ImagesCount = aPwgCategory.ImagesCount;
+                aPwgCategoryWPF.LastDate = aPwgCategory.LastDate;
+                aPwgCategoryWPF.Name = aPwgCategory.Name;
+                aPwgCategoryWPF.SubCategoriesCount = aPwgCategory.SubCategoriesCount;
+                aPwgCategoryWPF.Url = aPwgCategory.Url;
+
+                if (aPwgCategoryWPF.UpperCategoriesId == null)
+                {
+                    aPwgCategoryWPF.UpperCategoriesId = new System.Collections.ObjectModel.ObservableCollection<int>();
+                }
+                else
+                {
+                    aPwgCategoryWPF.UpperCategoriesId.Clear();
+                }
+
+                foreach (int i in aPwgCategory.UpperCategoriesId)
+                {
+                    aPwgCategoryWPF.UpperCategoriesId.Add(i);
+                }
+            }
+
+        }
+    }
+}
Index: /extensions/PiwigoLib/PiwigoWpf/DTO/Helper/PwgSessionWPFHelper.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/DTO/Helper/PwgSessionWPFHelper.cs	(revision 7160)
+++ /extensions/PiwigoLib/PiwigoWpf/DTO/Helper/PwgSessionWPFHelper.cs	(revision 7160)
@@ -0,0 +1,27 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Com.Piwigo.Lib.DTO;
+
+namespace Com.Piwigo.Wpf.DTO.Helper
+{
+    public static class PwgSessionWPFHelper
+    {
+        public static void AddPwgSessionInfoToPwgSessionWPF(PwgSession aPwgSession, ref PwgSessionWPF aPwgSessionWPF)
+        {
+            if (aPwgSession != null)
+            {
+                if (aPwgSessionWPF == null)
+                {
+                    aPwgSessionWPF = new PwgSessionWPF();
+                }
+                aPwgSession.UserName = aPwgSessionWPF.UserName;
+                aPwgSession.Status = aPwgSessionWPF.Status;
+                aPwgSession.Template = aPwgSessionWPF.Template;
+                aPwgSession.Theme = aPwgSessionWPF.Theme;
+                aPwgSession.CharSet = aPwgSessionWPF.CharSet;
+            }
+        }
+    }
+}
Index: /extensions/PiwigoLib/PiwigoWpf/DTO/PwgCategoryListWPF.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/DTO/PwgCategoryListWPF.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoWpf/DTO/PwgCategoryListWPF.cs	(revision 7160)
@@ -7,5 +7,5 @@
 namespace Com.Piwigo.Wpf.DTO
 {
-    class PwgCategoryListWPF : ObservableCollection<PwgCategoryWPF> 
+    public class PwgCategoryListWPF : ObservableCollection<PwgCategoryWPF> 
     {
     }
Index: /extensions/PiwigoLib/PiwigoWpf/DTO/PwgImageListWPF.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/DTO/PwgImageListWPF.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoWpf/DTO/PwgImageListWPF.cs	(revision 7160)
@@ -7,5 +7,5 @@
 namespace Com.Piwigo.Wpf.DTO
 {
-    class PwgImageListWPF : ObservableCollection<PwgImageWPF> 
+    public class PwgImageListWPF : ObservableCollection<PwgImageWPF> 
     {
     }
Index: /extensions/PiwigoLib/PiwigoWpf/DTO/PwgTagListWPF.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/DTO/PwgTagListWPF.cs	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoWpf/DTO/PwgTagListWPF.cs	(revision 7160)
@@ -7,5 +7,5 @@
 namespace Com.Piwigo.Wpf.DTO
 {
-    class PwgTagListWPF : ObservableCollection<PwgTagWPF> 
+    public class PwgTagListWPF : ObservableCollection<PwgTagWPF> 
     {
     }
Index: /extensions/PiwigoLib/PiwigoWpf/Helper/AppHelper.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/Helper/AppHelper.cs	(revision 7160)
+++ /extensions/PiwigoLib/PiwigoWpf/Helper/AppHelper.cs	(revision 7160)
@@ -0,0 +1,54 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ComponentModel;
+using System.Windows;
+using System.Diagnostics.CodeAnalysis;
+
+namespace Com.Piwigo.Wpf.Helper
+{
+    public class AppHelper
+    {
+        private static bool? _isInDesignMode;
+
+        /// <summary>
+        /// Gets a value indicating whether the control is in design mode (running in Blend
+        /// or Visual Studio).
+        /// </summary>
+        public static bool IsInDesignModeStatic
+        {
+            get
+            {
+                if (!_isInDesignMode.HasValue)
+                {
+                    var prop = DesignerProperties.IsInDesignModeProperty;
+                    _isInDesignMode
+                        = (bool)DependencyPropertyDescriptor
+                        .FromProperty(prop, typeof(FrameworkElement))
+                        .Metadata.DefaultValue;
+                }
+
+                return _isInDesignMode.Value;
+            }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether the control is in design mode (running under Blend
+        /// or Visual Studio).
+        /// </summary>
+        [SuppressMessage(
+            "Microsoft.Performance",
+            "CA1822:MarkMembersAsStatic",
+            Justification = "Non static member needed for data binding")]
+        public bool IsInDesignMode
+        {
+            get
+            {
+                return IsInDesignModeStatic;
+            }
+        }
+
+    }
+
+}
Index: /extensions/PiwigoLib/PiwigoWpf/MainWindow.xaml
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/MainWindow.xaml	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoWpf/MainWindow.xaml	(revision 7160)
@@ -3,4 +3,5 @@
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:pwg="clr-namespace:Com.Piwigo.Wpf"
+        xmlns:pwgdto="clr-namespace:Com.Piwigo.Wpf.DTO"
         xmlns:pwgcmd="clr-namespace:Com.Piwigo.Wpf.Command"
         Title="PiwigoWpf"
@@ -122,35 +123,17 @@
         <!-- DATA TEMPLATES -->
 
-        <!--<DataTemplate DataType="{x:Type pd:ImageFile}">
-            <Border VerticalAlignment="Center" HorizontalAlignment="Center" Padding="4" Margin="2" Background="White">
-                <Image Source="{Binding Image}" />
+        <DataTemplate DataType="{x:Type pwgdto:PwgImageWPF}">
+            <Border VerticalAlignment="Center" HorizontalAlignment="Center" Padding="4" Margin="2" Background="Blue"
+                    DataContext="{Binding}">
+                <Image Source="{Binding UrlElement}" ToolTip="{Binding File}" />
             </Border>
         </DataTemplate>
 
-        <DataTemplate DataType="{x:Type pd:Print}">
-            <Border Margin="3" VerticalAlignment="Center" HorizontalAlignment="Center" Background="White" Padding="3"  BorderBrush="#66000000" BorderThickness="1" MaxWidth="60" MaxHeight="60" >
-                <Image Source="{Binding Photo}" />
+        <DataTemplate DataType="{x:Type pwgdto:PwgCategoryWPF}">
+            <Border VerticalAlignment="Center" HorizontalAlignment="Center" Padding="4" Margin="2" Background="Blue"
+                    DataContext="{Binding}">                
+                <TextBox ToolTip="{Binding Name}" />
             </Border>
         </DataTemplate>
-
-        <DataTemplate DataType="{x:Type pd:GreetingCard}">
-            <Grid Margin="3" >
-                <Border VerticalAlignment="Center" HorizontalAlignment="Center" Background="{DynamicResource GreetingCardGradient}" Width="40" Height="50" BorderBrush="#44000000" BorderThickness="1" >
-                    <Border.RenderTransform>
-                        <SkewTransform AngleY="-10" />
-                    </Border.RenderTransform>
-                </Border>
-                <Border VerticalAlignment="Center" HorizontalAlignment="Center" Background="White" Width="50" Height="50" BorderBrush="#66000000" BorderThickness="1" >
-                    <Image Margin="3" Source="{Binding Photo}" />
-                </Border>
-            </Grid>
-        </DataTemplate>
-
-        <DataTemplate DataType="{x:Type pd:TShirt}">
-            <Grid Margin="3">
-                <Path VerticalAlignment="Center" HorizontalAlignment="Center" Fill="White" Stroke="#66000000"  Data="M 0 9.6 L 24 0 L 40 0 L 64 9.6 L 62.4 24 L 51.2 24 L 51.2 56 L 12.8 56 L 12.8 24 L 1.6 24 Z "/>
-                <Image Source="{Binding Photo}"  MaxWidth="32" MaxHeight="36"  VerticalAlignment="Center" HorizontalAlignment="Center"/>
-            </Grid>
-        </DataTemplate>-->
 
         <!-- PHOTOLIST TEMPLATE -->
@@ -218,55 +201,4 @@
                 </EventTrigger>
             </Style.Triggers>
-        </Style>
-
-        <!-- SHOPPING CART TEMPLATE -->
-
-        <Style x:Key="ShoppingCartStyle" TargetType="{x:Type ListBox}">
-            <Setter Property="Template">
-                <Setter.Value>
-                    <ControlTemplate TargetType="{x:Type ListBox}" >
-                        <Border 
-							BorderBrush="Gray" 
-							BorderThickness="1" 
-							CornerRadius="6" 
-							Background="{DynamicResource ShoppingCartGradient}" >
-                            <ScrollViewer>
-                                <WrapPanel
-									ItemHeight="70" 
-									ItemWidth="70" 
-									Margin="0,25,0,0"
-									IsItemsHost="True" 
-									Orientation="Horizontal" 
-									HorizontalAlignment="Center"  />
-                            </ScrollViewer>
-                        </Border>
-                    </ControlTemplate>
-                </Setter.Value>
-            </Setter>
-        </Style>
-
-        <!-- SHOPPING CART TRIGGERS -->
-
-        <Style x:Key="ShoppingCartItem" TargetType="{x:Type ListBoxItem}">
-            <Setter Property="BorderBrush" Value="Transparent" />
-            <Setter Property="Template">
-                <Setter.Value>
-                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
-                        <Border 
-							x:Name="ContentBorder" 
-							Opacity="0.85">
-                            <ContentPresenter />
-                        </Border>
-                        <ControlTemplate.Triggers>
-                            <Trigger Property="IsSelected" Value="True">
-                                <Setter 
-									TargetName="ContentBorder" 
-									Property="Opacity" 
-									Value="1.0" />
-                            </Trigger>
-                        </ControlTemplate.Triggers>
-                    </ControlTemplate>
-                </Setter.Value>
-            </Setter>
         </Style>
 
@@ -500,7 +432,7 @@
            <ProgressBar IsIndeterminate="True" />          
         </StackPanel>
-        
-        <ListView Name="listViewCategory" DockPanel.Dock="Left" MinWidth="100" />
-        <ListView Name="listViewImage" DockPanel.Dock="Right"  MinWidth="500"/>
+
+        <ListView Name="listViewCategory" Style="PhotoListStyle" DockPanel.Dock="Left" MinWidth="100" ItemsSource="{Binding Source={StaticResource Categories}}" />
+        <ListView Name="listViewImage" Style="PhotoListStyle" DockPanel.Dock="Right"  MinWidth="500" ItemsSource="{Binding Source={StaticResource Images}}" />
     </DockPanel>
     
Index: /extensions/PiwigoLib/PiwigoWpf/PiwigoWpf.csproj
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/PiwigoWpf.csproj	(revision 7159)
+++ /extensions/PiwigoLib/PiwigoWpf/PiwigoWpf.csproj	(revision 7160)
@@ -79,4 +79,9 @@
     <Compile Include="Command\PwgCmdConnect.cs" />
     <Compile Include="Command\PwgCmdBase.cs" />
+    <Compile Include="DTO\Helper\PwgCategoryWPFHelper.cs" />
+    <Compile Include="DTO\Helper\PwgCategoryListWPFHelper.cs" />
+    <Compile Include="DTO\Helper\PwgSessionWPFHelper.cs" />
+    <Compile Include="DTO\PwgModelManager.cs" />
+    <Compile Include="Helper\AppHelper.cs" />
     <Compile Include="Settings.cs" />
     <Page Include="MainWindow.xaml">
@@ -126,5 +131,5 @@
   </ItemGroup>
   <ItemGroup>
-    <Resource Include="Pictures\PiwigoLogo.png" />
+    <EmbeddedResource Include="Pictures\PiwigoLogo.png" />
   </ItemGroup>
   <ItemGroup>
