diff --git a/NPLib/Core/NPOnline.cxx b/NPLib/Core/NPOnline.cxx
index 4b1056503577c397cc40bf4eda1aa4a32154e324..f6844bcf692cdf726938f4c547cff20d2950e82a 100644
--- a/NPLib/Core/NPOnline.cxx
+++ b/NPLib/Core/NPOnline.cxx
@@ -18,88 +18,134 @@ NPL::NPOnline::NPOnline(){
   TString NPLPath = gSystem->Getenv("NPTOOL");
   gROOT->ProcessLine(Form(".x %s/NPLib/scripts/NPToolLogon.C+", NPLPath.Data()));
   gROOT->SetStyle("nptool");
-  
+
+  MakeGui();
+
+  m_Connect->Connect("Clicked()", "NPL::NPOnline", this, "Connect()");
+  m_Quit->SetCommand("gApplication->Terminate()");
+  m_Update->Connect("Clicked()", "NPL::NPOnline", this, "Update()");
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void NPL::NPOnline::MakeGui(){
   m_BgColor = gROOT->GetColor(kGray+3)->GetPixel();
   m_FgColor = gROOT->GetColor(kAzure+7)->GetPixel();
 
-  m_Main = new TGMainFrame(0,0,0);
-  m_Main->SetCleanup(kDeepCleanup);
+  // main frame
+  m_Main = new TGMainFrame(gClient->GetRoot(),10,10,kMainFrame | kVerticalFrame);
+  m_Main->SetName("nponline");
   m_Main->SetBackgroundColor(m_BgColor);
   m_Main->SetForegroundColor(m_FgColor);
 
+  m_Main->SetLayoutBroken(kTRUE);
 
-  m_Tab= new TGTab(m_Main,100,100);
-  m_Tab->SetBackgroundColor(m_BgColor);
-  m_Tab->SetForegroundColor(m_FgColor);
-  m_Tab->ChangeSubframesBackground(m_BgColor);  
-  AddTab();
-  
-  // Create a horizonal frame containing two text buttons
-  m_Lhorz = new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 30);
-  m_Lresize = new TGLayoutHints(kLHintsExpandX|kLHintsExpandY, 0, 0, 0, 30);
-  m_Lbut = new TGLayoutHints(kLHintsCenterY, 10, 10, 0, 0);
-  m_Lcan = new TGLayoutHints(kLHintsCenterX|kLHintsCenterY,30,30,30,30);
-  m_Horz = new TGHorizontalFrame(m_Main, 100, 100);
-  
-  m_Horz->SetBackgroundColor(m_BgColor);
-  m_Horz->SetForegroundColor(m_FgColor);
-
-  // Create "Connect" and "Quit" buttons
-  // Add to horizontal frame
-  m_Connect = new TGTextButton(m_Horz, "Connect");
-  m_Connect->Connect("Clicked()", "NPL::NPOnline", this, "Connect()");
-  m_Connect->SetBackgroundColor(m_BgColor);
-  m_Connect->SetForegroundColor(m_FgColor);
-
-  m_Quit = new TGTextButton(m_Horz, "Quit");
-  m_Quit->SetCommand("gApplication->Terminate()");
+  string NPLPath = gSystem->Getenv("NPTOOL");  
+  string path_quit = NPLPath+"/NPLib/Core/icons/power.xpm";
+  m_Quit = new TGPictureButton(m_Main,gClient->GetPicture(path_quit.c_str()),-1,TGPictureButton::GetDefaultGC()(),kChildFrame);
   m_Quit->SetBackgroundColor(m_BgColor);
-  m_Quit->SetForegroundColor(m_FgColor);
 
-  m_Update = new TGTextButton(m_Horz, "Update");
-  m_Update->Connect("Clicked()", "NPL::NPOnline", this, "Update()");
+  m_Main->AddFrame(m_Quit, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
+  m_Quit->MoveResize(10,10,32,32);
+  
+  string path_update = NPLPath+"/NPLib/Core/icons/download.xpm";
+  m_Update = new TGPictureButton(m_Main,gClient->GetPicture(path_update.c_str()),-1,TGPictureButton::GetDefaultGC()(),kChildFrame);
   m_Update->SetBackgroundColor(m_BgColor);
-  m_Update->SetForegroundColor(m_FgColor);
-
-  m_Horz->AddFrame(m_Quit, m_Lbut);
-  m_Horz->AddFrame(m_Connect, m_Lbut);
-  m_Horz->AddFrame(m_Update, m_Lbut);
-
-  m_Main->AddFrame(m_Horz, m_Lhorz);
-  m_Main->AddFrame(m_Tab, m_Lresize);
+  m_Main->AddFrame(m_Update, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
+  m_Update->MoveResize(45,10,32,32);
+ 
+  string path_connect = NPLPath+"/NPLib/Core/icons/plugin.xpm";
+  m_Connect = new TGPictureButton(m_Main,gClient->GetPicture(path_connect.c_str()),-1,TGPictureButton::GetDefaultGC()(),kChildFrame);
+  m_Connect->SetBackgroundColor(m_BgColor);
 
-  m_Main->SetWindowName("NPOnline");
+  m_Main->AddFrame(m_Connect, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
+  m_Connect->MoveResize(80,10,32,32);
+
+  TGFont* ufont;         // will reflect user font changes
+  ufont = gClient->GetFont("-*-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1");
+
+  TGGC  * uGC;           // will reflect user GC changes
+  // graphics context changes
+  GCValues_t valress;
+  valress.fMask = kGCForeground | kGCBackground | kGCFillStyle | kGCFont | kGCGraphicsExposures;
+  gClient->GetColorByName("#000000",valress.fForeground);
+  gClient->GetColorByName("#e7e7e7",valress.fBackground);
+  valress.fFillStyle = kFillSolid;
+  valress.fFont = ufont->GetFontHandle();
+  valress.fGraphicsExposures = kFALSE;
+  uGC = gClient->GetGC(&valress, kTRUE);
+  m_Address = new TGTextEntry(m_Main, new TGTextBuffer(14),-1,uGC->GetGC(),ufont->GetFontStruct(),kSunkenFrame | kDoubleBorder | kOwnBackground);
+  m_Address->SetMaxLength(4096);
+  m_Address->SetAlignment(kTextLeft);
+  m_Address->SetText("localhost");
+  m_Address->Resize(200,m_Address->GetDefaultHeight());
+  m_Main->AddFrame(m_Address, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
+  m_Address->MoveResize(120,10,200,20);
+
+  m_Port = new TGNumberEntry(m_Main, (Double_t) 9090,9,-1,(TGNumberFormat::EStyle) 5);
+  m_Port->SetName("m_Port");
+  m_Main->AddFrame(m_Port, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
+  m_Port->MoveResize(330,10,80,30);
+
+  // canvas widget
+  TGCanvas* m_ListCanvas = new TGCanvas(m_Main,120,500);
+  m_ListCanvas->SetName("m_ListCanvas");
+
+  // canvas viewport
+  TGViewPort* fViewPort669 = m_ListCanvas->GetViewPort();
+
+  // list tree
+  m_CanvasListTree = new CanvasList(m_Main,m_ListCanvas);
+  m_ListTree = m_CanvasListTree->GetListTree();
+
+  fViewPort669->AddFrame(m_ListTree);
+  m_ListTree->SetLayoutManager(new TGHorizontalLayout(m_ListTree));
+  m_ListTree->MapSubwindows();
+
+  m_ListCanvas->SetContainer(m_ListTree);
+  m_ListCanvas->MapSubwindows();
+  m_Main->AddFrame(m_ListCanvas, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
+  m_ListCanvas->MoveResize(10,50,120,500);
+
+  // tab widget
+  m_Tab = new TGTab(m_Main,700,500);
+  m_Tab->Resize(m_Tab->GetDefaultSize());
+  m_Main->AddFrame(m_Tab, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
+  m_Tab->MoveResize(144,50,700,500);
+  m_CanvasListTree->SetTab(m_Tab);
+  //AddTab();
+  m_Main->SetMWMHints(kMWMDecorAll,kMWMFuncAll,kMWMInputModeless);
   m_Main->MapSubwindows();
 
   m_Main->Resize(m_Main->GetDefaultSize());
   m_Main->MapWindow();
-
-  m_Main->Layout();
-  m_hist=0;
+  m_Main->Resize(900,600);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 NPL::NPOnline::~NPOnline(){
   delete m_Main; 
+  delete m_ListCanvas;
+  delete m_ListTree;
   delete m_Tab;
-  delete m_Lcan;
-  delete m_Horz;
-  delete m_Lbut;
-  delete m_Lhorz;
   delete m_Quit;
   delete m_Connect;
   delete m_Update;
   delete m_Sock;
+  delete m_Port;
+  delete m_Address;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void NPL::NPOnline::Connect(){
   // Connect to SpectraServer
-  m_Sock = new TSocket("localhost", 9090);
+  m_Sock = new TSocket(m_Address->GetDisplayText(),(Int_t) m_Port->GetNumber());
   if(m_Sock->IsValid()){
     m_Connect->SetState(kButtonDisabled);
     Update();
   }
+  else{
+    cout << "Connection to " << m_Address->GetDisplayText() << " " <<(Int_t) m_Port->GetNumber() << " Failed" << endl;
+  }
 }
 ////////////////////////////////////////////////////////////////////////////////
 void NPL::NPOnline::Update(){
@@ -116,51 +162,93 @@ void NPL::NPOnline::Update(){
     return;
   }
   
+  m_CanvasListTree->Clear();
   m_CanvasList = (TList*) message->ReadObject(message->GetClass());
-  
-  
-  int current_tab = m_Tab->GetCurrent();
-  int tabs =  m_Tab->GetNumberOfTabs();
-  for(int i = tabs-1 ; i != -1 ; i--){
-    m_Tab->RemoveTab(i,false);
-  }
- 
+
+  TGCompositeFrame* tf; 
+  TRootEmbeddedCanvas* canvas;
   for(TCanvas* c = (TCanvas*) m_CanvasList->First() ; c !=0 ; c = (TCanvas*) m_CanvasList->After(c)){
-    AddTab(c->GetName(),c);
+    m_CanvasListTree->AddItem(c);
+
+    TGCompositeFrame*  tab =  m_Tab->GetTabContainer(c->GetName());
+    if(tab){
+      tab->RemoveAll();
+      TRootEmbeddedCanvas* canvas = new TRootEmbeddedCanvas("Canvas",tab,700,490,!kSunkenFrame); 
+      canvas->AdoptCanvas(c);
+      tab->AddFrame(canvas);
+      tab->SetLayoutManager(new TGVerticalLayout(tab));
+    }
+  
   }
-  if( m_Tab->GetNumberOfTabs()==0)
-    AddTab();
- 
+
   m_Main->MapSubwindows();
   m_Main->MapWindow();
   m_Main->Layout();
-  m_Tab->SetTab(current_tab);
 }
 
+////////////////////////////////////////////////////////////////////////////////
 
 ////////////////////////////////////////////////////////////////////////////////
-void NPL::NPOnline::AddTab(std::string name,TCanvas* c){
-  TGCompositeFrame* tf; 
-  TRootEmbeddedCanvas* canvas;
-  if(name=="default"){
-   tf = m_Tab->AddTab("NPOnline");
-  
-   canvas= new TRootEmbeddedCanvas("Canvas",tf,1600,800,!kSunkenFrame); 
-   canvas->GetCanvas()->SetMargin(0,0,0,0);
-   canvas->GetCanvas()->SetFillColor(kGray+3);
-   TImage* logo = TASImage::Open("nptoolLogo.png");
-   logo->SetConstRatio(true);
-   logo->Draw("");
+////////////////////////////////////////////////////////////////////////////////
+NPL::CanvasList::CanvasList(TGMainFrame* main, TGCanvas* parent){
+  m_popen = gClient->GetPicture("ofolder_t.xpm");
+  m_pclose = gClient->GetPicture("folder_t.xpm");
+  m_ListTree = new TGListTree(parent,kHorizontalFrame);
+  m_ListTree->Connect("DoubleClicked(TGListTreeItem*,Int_t)","NPL::CanvasList",this,"OnDoubleClick(TGListTreeItem*,Int_t)");
+  m_Main = main;
+}
+////////////////////////////////////////////////////////////////////////////////
+NPL::CanvasList::~CanvasList(){
+}
+////////////////////////////////////////////////////////////////////////////////
+void NPL::CanvasList::OnDoubleClick(TGListTreeItem* item, Int_t btn){
+  AddTab(item->GetText(),m_Canvas[item->GetText()]);
+}
+////////////////////////////////////////////////////////////////////////////////
+void NPL::CanvasList::AddItem(TCanvas* c){
+  TGListTreeItem*  item  = m_ListTree->AddItem(NULL,c->GetName());
+  item->SetPictures(m_popen, m_pclose);
+  m_Canvas[c->GetName()]=c;
+}
+////////////////////////////////////////////////////////////////////////////////
+void NPL::CanvasList::Clear(){
+  m_Canvas.clear();
+  TGListTreeItem* item =  m_ListTree->GetFirstItem() ;
+  while(item){
+   m_ListTree->DeleteItem(item);
+  item =  m_ListTree->GetFirstItem() ;
   }
-  
-  else{
-    tf = m_Tab->AddTab(name.c_str());
-    canvas= new TRootEmbeddedCanvas("Canvas",tf,1600,800,!kSunkenFrame); 
-    if(c)
-      canvas->AdoptCanvas(c);
+}
+////////////////////////////////////////////////////////////////////////////////
+TGListTree* NPL::CanvasList::GetListTree(){
+  return m_ListTree;
+}
+////////////////////////////////////////////////////////////////////////////////
+void NPL::CanvasList::AddTab(std::string name,TCanvas* c){
+  // If the tab exist, activate
+  if(m_Tab->GetTabTab(name.c_str())){
+      m_Tab->SetTab(name.c_str());
+    return;
   }
-  tf->SetBackgroundColor(m_BgColor);
-  tf->SetForegroundColor(m_FgColor);
-  tf->AddFrame(canvas,m_Lresize);
 
+  TGCompositeFrame* tf = m_Tab->AddTab(name.c_str());
+  TRootEmbeddedCanvas* canvas = new TRootEmbeddedCanvas("Canvas",tf,700,490,!kSunkenFrame); 
+     
+  if(c)
+    canvas->AdoptCanvas(c);
+ 
+  //  tf->SetBackgroundColor(m_BgColor);
+  //  tf->SetForegroundColor(m_FgColor);
+  tf->AddFrame(canvas);
+  tf->SetLayoutManager(new TGVerticalLayout(tf));
+  m_Tab->Resize(m_Tab->GetDefaultSize());
+  m_Tab->MoveResize(144,50,700,500);
+  m_Tab->SetTab(name.c_str());
+  m_Main->MapSubwindows();
+  m_Main->MapWindow();
+  m_Main->Layout();
+}
+////////////////////////////////////////////////////////////////////////////////
+void NPL::CanvasList::SetTab(TGTab* tab){
+  m_Tab=tab;
 }
diff --git a/NPLib/Core/NPOnline.h b/NPLib/Core/NPOnline.h
index 55f2ea3b0cff09cd3f75298f69dfb54585ff0e83..d499fb9627831aecdbb30170b96d95da5e4c007b 100644
--- a/NPLib/Core/NPOnline.h
+++ b/NPLib/Core/NPOnline.h
@@ -6,10 +6,42 @@
 #include "TRootEmbeddedCanvas.h"
 #include "TH1.h"
 #include "TSocket.h"
+#include "TGListTree.h"
+#include "TGTextEntry.h"
+#include "TGNumberEntry.h"
+//#include "TGCanvasContainer.h"
 #include "RQ_OBJECT.h"
+#include<map>
 using namespace std;
 
 namespace NPL{
+  class CanvasList {
+    RQ_OBJECT("CanvasList")
+    protected:
+      TGMainFrame* m_Main;
+      TGListTree* m_ListTree;
+      TGTab* m_Tab;
+      map<string,TCanvas*> m_Canvas;
+      const TGPicture* m_popen;     
+      const TGPicture* m_pclose;    
+    
+
+    public:
+      CanvasList(TGMainFrame* main, TGCanvas* parent);
+      virtual ~CanvasList();
+
+      // slots
+      void OnDoubleClick(TGListTreeItem* item, Int_t btn);
+      
+      // Interface with NPOnline
+      void SetTab(TGTab* tab);
+      void AddItem(TCanvas* c);
+      void Clear();
+      TGListTree* GetListTree();
+      // Add a new Tab to the interface
+      void AddTab(std::string name="default",TCanvas* c=0);
+  };
+
   class NPOnline{
     RQ_OBJECT("NPOnline")
 
@@ -17,29 +49,28 @@ namespace NPL{
       NPOnline();
       ~NPOnline();
 
+      void MakeGui();
       void Connect();
       void Update();
-     
-      // Add a new Tab to the interface
-      void AddTab(std::string name="default",TCanvas* c=0);
-    
-    private: // Server client
+
+        private: // Server client
       TSocket* m_Sock;
       TList* m_CanvasList;
 
     private: // GUI stuff
       TGMainFrame* m_Main;
       TGTab* m_Tab;
-      TGLayoutHints* m_Lcan;
-      TGHorizontalFrame* m_Horz;
-      TGLayoutHints* m_Lbut;
-      TGLayoutHints* m_Lhorz;
-      TGLayoutHints* m_Lresize;
-      TGButton* m_Quit;
-      TGButton* m_Connect;
-      TGButton* m_Update;
+      TGPictureButton* m_Quit;
+      TGPictureButton* m_Connect;
+      TGPictureButton* m_Update;
+      TGTextEntry* m_Address; 
+      TGNumberEntry* m_Port; 
+      TGListTree* m_ListTree;
+      CanvasList* m_CanvasListTree;
+
+      TGCanvas* m_ListCanvas;
       
-    private: // Style
+          private: // Style
       Pixel_t m_BgColor;
       Pixel_t m_FgColor;
 
diff --git a/NPLib/Core/icons/download.png b/NPLib/Core/icons/download.png
new file mode 100644
index 0000000000000000000000000000000000000000..4c2bc3694eac016f7a8f42f4fc4f676bae7e7213
Binary files /dev/null and b/NPLib/Core/icons/download.png differ
diff --git a/NPLib/Core/icons/download.xpm b/NPLib/Core/icons/download.xpm
new file mode 100644
index 0000000000000000000000000000000000000000..67cec52540588c0c3579d25128efc01d9e600a91
--- /dev/null
+++ b/NPLib/Core/icons/download.xpm
@@ -0,0 +1,155 @@
+/* XPM */
+static char *download[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 117 2 ",
+"   c #1786EE",
+".  c #1C8AF2",
+"X  c #1C8BF3",
+"o  c #1E8EF7",
+"O  c #2289EA",
+"+  c #258AE9",
+"@  c #268DEE",
+"#  c #328FE6",
+"$  c #338FE6",
+"%  c #3590E6",
+"&  c #208FF8",
+"*  c #2892F5",
+"=  c #2191FB",
+"-  c #2192FB",
+";  c #2193FE",
+":  c #2193FF",
+">  c #2293FE",
+",  c #2194FF",
+"<  c #2294FE",
+"1  c #2394FE",
+"2  c #2294FF",
+"3  c #2394FF",
+"4  c #2395FF",
+"5  c #2495FF",
+"6  c #2496FF",
+"7  c #2596FF",
+"8  c #2696FF",
+"9  c #2797FF",
+"0  c #2A97FD",
+"q  c #2897FF",
+"w  c #2C97FD",
+"e  c #2998FF",
+"r  c #2A98FF",
+"t  c #2B98FF",
+"y  c #2C98FD",
+"u  c #2D98FD",
+"i  c #2D99FF",
+"p  c #2E9AFF",
+"a  c #329CFF",
+"s  c #339CFF",
+"d  c #399FFF",
+"f  c #3BA0FF",
+"g  c #3CA0FF",
+"h  c #3CA1FF",
+"j  c #3DA1FF",
+"k  c #3EA1FF",
+"l  c #3EA2FF",
+"z  c #53A1EB",
+"x  c #45A5FF",
+"c  c #55A6F1",
+"v  c #52ABFF",
+"b  c #57AEFF",
+"n  c #5BB0FF",
+"m  c #5DB1FF",
+"M  c #5FB1FF",
+"N  c #71B0EB",
+"B  c #76B5EF",
+"V  c #77B5EF",
+"C  c #61ABF1",
+"Z  c #60B2FF",
+"A  c #63B3FF",
+"S  c #63B4FF",
+"D  c #64B4FF",
+"F  c #73B6F4",
+"G  c #74BCFF",
+"H  c #78BEFF",
+"J  c #8BBEEE",
+"K  c #9CC8F2",
+"L  c #97CCFF",
+"P  c #AACFF2",
+"I  c #A0D1FF",
+"U  c #A9D5FF",
+"Y  c #AAD6FF",
+"T  c #ABD6FF",
+"R  c #ADD7FF",
+"E  c #B7D7F4",
+"W  c #B8DAF9",
+"Q  c #B8DDFF",
+"!  c #BADEFF",
+"~  c #BBDEFF",
+"^  c #C3DDF6",
+"/  c #C3E0FB",
+"(  c #C1E1FF",
+")  c #C5E3FF",
+"_  c #C6E3FF",
+"`  c #D5EAFF",
+"'  c #D5EBFF",
+"]  c #DBEDFF",
+"[  c #DFF0FF",
+"{  c #E0EEFA",
+"}  c #E1EEFA",
+"|  c #E4F0FA",
+" . c #E4F0FB",
+".. c #E1F0FE",
+"X. c #E2F1FF",
+"o. c #E3F1FF",
+"O. c #E4F2FF",
+"+. c #E5F2FF",
+"@. c #E5F3FF",
+"#. c #E6F3FF",
+"$. c #E8F4FF",
+"%. c #F1F8FF",
+"&. c #F3F9FF",
+"*. c #F4FAFF",
+"=. c #F5FAFF",
+"-. c #F6FAFE",
+";. c #F6FAFF",
+":. c #F6FBFF",
+">. c #F8FBFE",
+",. c #F9FBFE",
+"<. c #F9FCFE",
+"1. c #F9FCFF",
+"2. c #FAFCFF",
+"3. c #FCFEFF",
+"4. c #FDFEFF",
+"5. c white",
+"6. c None",
+/* pixels */
+"6.6.6.6.6.6.6.6.6.6.6.6.5 5 5 5 5 5 5 5 6.6.6.6.6.6.6.6.6.6.6.6.",
+"6.6.6.6.6.6.6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.6.6.6.6.6.6.",
+"6.6.6.6.6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.6.6.6.6.",
+"6.6.6.6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.6.6.6.",
+"6.6.6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.6.6.",
+"6.6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.6.",
+"6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.",
+"6.6.5 5 5 5 5 5 5 5 5 t m b 5 5 5 0 Z m t 5 5 5 5 5 5 5 5 5 6.6.",
+"6.6.5 5 5 5 5 5 5 5 f U 2.] f 5 6 f | 2.U f 5 5 5 5 5 5 5 5 6.6.",
+"6.5 5 5 5 5 5 5 5 f ) 2.2.$.f 5 5 f | 2.2.) f 5 5 5 5 5 5 5 5 6.",
+"6.5 5 5 5 5 5 5 t U 2.2.2.$.d 5 5 f $.2.2.2.U t 5 5 5 5 5 5 5 6.",
+"6.5 5 5 5 5 5 5 Z 2.2.2.2.| f 5 6 f $.2.2.2.2.Z 5 5 5 5 5 5 5 6.",
+"5 5 5 5 5 5 5 a R 2.2.2.2.$.f 5 5 f | 2.2.2.2.U 5 5 5 5 5 5 5 5 ",
+"5 5 5 5 5 t H _ 2.2.2.P K V 0 5 5 t N K P 2.2.] a 5 5 5 5 5 5 5 ",
+"5 5 5 5 t I 2.2.2.2.2.C   . 5 5 5 5 .   C :.2.$.b 5 5 5 5 5 5 5 ",
+"5 5 5 5 G 2.2.2.2.2.2.] f 5 5 5 5 5 5 x ] 2.2.2.| ! n 5 5 5 5 5 ",
+"5 5 5 a _ 2.2.2.2.2.2.2.W a 5 5 5 5 t ! 2.2.2.2.2.2.$.m 5 5 5 5 ",
+"5 5 5 f $.2.2.2.2.2.2.2.2.L 0 5 5 5 L 2.2.2.2.2.2.2.2.~ t 5 5 5 ",
+"5 5 5 d | 2.2.2.2.2.2.2.2.:.G 5 5 G :.2.2.2.2.2.2.2.2.| f 5 5 5 ",
+"5 5 5 a _ 2.2.2.2.2.2.2.2.2.$.Z Z $.2.2.2.2.2.2.2.2.2.| f 5 5 5 ",
+"6.5 5 5 F 2.2.2.2.2.2.2.2.2.2.:.:.2.2.2.2.2.2.2.2.2.2.W t 5 5 6.",
+"6.5 5 5 * K 2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.| c 5 5 5 6.",
+"6.5 5 5 5 + N ^ } | $.| } | } } $.| | | $.| | | | E z 5 5 5 5 6.",
+"6.6.5 5 5 5 . + % % % % % % % # % % % % % % % % % + . 5 5 5 6.6.",
+"6.6.5 5 5 5 5 5 5 5 . 5 & 5 o 5 o 5 o 5 o 5 o 5 5 5 5 5 5 5 6.6.",
+"6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.",
+"6.6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.6.",
+"6.6.6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.6.6.",
+"6.6.6.6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.6.6.6.",
+"6.6.6.6.6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.6.6.6.6.",
+"6.6.6.6.6.6.6.6.6.5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.6.6.6.6.6.6.6.6.",
+"6.6.6.6.6.6.6.6.6.6.6.6.5 5 5 5 5 5 5 5 6.6.6.6.6.6.6.6.6.6.6.6."
+};
diff --git a/NPLib/Core/icons/plugin.png b/NPLib/Core/icons/plugin.png
new file mode 100644
index 0000000000000000000000000000000000000000..0eef10dd151596623309b3dd064c6b9a92ac9dc3
Binary files /dev/null and b/NPLib/Core/icons/plugin.png differ
diff --git a/NPLib/Core/icons/plugin.xpm b/NPLib/Core/icons/plugin.xpm
new file mode 100644
index 0000000000000000000000000000000000000000..a49da88321ed3e373be73fa14d2894b39b21df4c
--- /dev/null
+++ b/NPLib/Core/icons/plugin.xpm
@@ -0,0 +1,162 @@
+/* XPM */
+static char *plugin[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 124 2 ",
+"   c #4A5669",
+".  c #4B576B",
+"X  c #4C5A6E",
+"o  c #4E5B71",
+"O  c #4E5B72",
+"+  c #4E5C71",
+"@  c #4E5C72",
+"#  c #4F5C72",
+"$  c #4E5D72",
+"%  c #4E5C73",
+"&  c #4F5C73",
+"*  c #4F5D73",
+"=  c #505F74",
+"-  c #516175",
+";  c #526777",
+":  c #516875",
+">  c #526778",
+",  c #536B79",
+"<  c #546F78",
+"1  c #556F7C",
+"2  c #56727C",
+"3  c #56737D",
+"4  c #57747E",
+"5  c #577A7C",
+"6  c #577280",
+"7  c #587880",
+"8  c #597B81",
+"9  c #597982",
+"0  c #597A82",
+"q  c #5B7D86",
+"w  c #5C7E86",
+"e  c #6E7F89",
+"r  c #5A8083",
+"t  c #5B8183",
+"y  c #5B8583",
+"u  c #5C8385",
+"i  c #5D8788",
+"p  c #5E858B",
+"a  c #60898D",
+"s  c #618E8F",
+"d  c #70838D",
+"f  c #61928D",
+"g  c #7C8690",
+"h  c #639192",
+"j  c #649393",
+"k  c #659C93",
+"l  c #659D93",
+"z  c #659994",
+"x  c #66A095",
+"c  c #69A09A",
+"v  c #69A09B",
+"b  c #6BA59E",
+"n  c #6BA89C",
+"m  c #6BAA9D",
+"M  c #6CAB9F",
+"N  c #71AB9E",
+"B  c #6EAFA1",
+"V  c #6DB0A0",
+"C  c #6EB1A1",
+"Z  c #6EB2A1",
+"A  c #6FB4A2",
+"S  c #6FB0A4",
+"D  c #6FB5A4",
+"F  c #73B2A1",
+"G  c #70B1A5",
+"H  c #70B5A4",
+"J  c #70B6A4",
+"K  c #71B9A7",
+"L  c #77B9A7",
+"P  c #72B6A8",
+"I  c #72B7A8",
+"U  c #72B8A9",
+"Y  c #72BAA8",
+"T  c #72B9AA",
+"R  c #73B9AA",
+"E  c #73BDAA",
+"W  c #74BDAB",
+"Q  c #74BEAB",
+"!  c #74BFAC",
+"~  c #74BFAD",
+"^  c #75BFAD",
+"/  c #79BAAB",
+"(  c #74C0AD",
+")  c #75C0AD",
+"_  c #75C0AE",
+"`  c #75C1AE",
+"'  c #76C1AE",
+"]  c #74C2AE",
+"[  c #74C2AF",
+"{  c #75C2AF",
+"}  c #76C2AE",
+"|  c #76C2AF",
+" . c #77C2AF",
+".. c #76C3AF",
+"X. c #76C3B0",
+"o. c #77C3B0",
+"O. c #77C4B0",
+"+. c #7AC3B0",
+"@. c #7CC4B1",
+"#. c #7DC4B1",
+"$. c #90B3A8",
+"%. c #97BCAD",
+"&. c #98C1B1",
+"*. c #98C3B5",
+"=. c #93CAB8",
+"-. c #9ECDBC",
+";. c #AFC7B8",
+":. c #A0CCBB",
+">. c #A0CEBC",
+",. c #A1CEBD",
+"<. c #B0C8B9",
+"1. c #B6D4C3",
+"2. c #B7D5C4",
+"3. c #C4D8C8",
+"4. c #D0D2C7",
+"5. c #D0D3C7",
+"6. c #D9DCCD",
+"7. c #DADDCE",
+"8. c #DADECF",
+"9. c #DBE0D0",
+"0. c #E0E0D1",
+"q. c #E1E0D1",
+"w. c #E2E1D2",
+"e. c None",
+/* pixels */
+"e.e.e.e.e.e.e.e.e.e.e.e.| | | | | | | | e.e.e.e.e.e.e.e.e.e.e.e.",
+"e.e.e.e.e.e.e.e.e.| | | | | | | | | | | | | | e.e.e.e.e.e.e.e.e.",
+"e.e.e.e.e.e.e.| | | | | | | | | | | | | | | | | | e.e.e.e.e.e.e.",
+"e.e.e.e.e.e.| | | | | | | | | | | | | | | | | | | | e.e.e.e.e.e.",
+"e.e.e.e.e.| | | | | | | | | | | | | | | | | | | | | | e.e.e.e.e.",
+"e.e.e.e.| | | | | | | | | | | | | | @.,.=.| | | | | | | e.e.e.e.",
+"e.e.e.| | | | | | | | | | o.o.| | @.1.0.3. .| | | | | | | e.e.e.",
+"e.e.| | | | | | | | | | U v U o.@.1.0.6.&.| | | | | | | | | e.e.",
+"e.e.| | | | | | | | | o.h O q / 2.9.6.%.F | | | | | | | | | e.e.",
+"e.| | | | | | | | | | o.z X O d 5.6.%.D o.| | | | | | | | | | e.",
+"e.| | | | | | | | | o.U q   O O g $.D | o.| | | | @.| | | | | e.",
+"e.| | | | | | | | | U q O X   O O q I o.| | | | -.3.=.| | | | e.",
+"| | | | | | | | o.U q O = O X   O O q U | | | -.6.0.-.o.| | | | ",
+"| | | | | | | | U p = O O = O O   O O q U o.,.9.0.;.L o.| | | | ",
+"| | | | | | | o.B - O O = = O = X   O O q *.9.0.<.F U o.| | | | ",
+"| | | | | | | | a O O = O O = O = X   O O g 4.<.F | | | | | | | ",
+"| | | | | | | | w O O O O O = O O O X X X = d m | | | | | | | | ",
+"| | | | | | | | p O = = = = O O = O O X   X O 8 U | | | | | | | ",
+"| | | | | | | o.s O = O O = O = O = O = X   O O v | | | | | | | ",
+"| | | | | | | o.B ; O O = O = O O O = O O 2 y y D | | | | | | | ",
+"e.| | | | | | | U p O O = O = = = O O O 2 m L D U | | | | | | e.",
+"e.| | | | | | o.D , X O O O O O O = O 2 m | | | o.| | | | | | e.",
+"e.| | | | | o.D 6 O : 5 , O O O O - q m | | | | o.o.| | | | | e.",
+"e.e.| | | o.o.h O , z D z y 5 2 5 f V | | | | | | | | | | | e.e.",
+"e.e.| | | | o.m y z | | | L V V L U | | | | | | | | | | | | e.e.",
+"e.e.e.| | | o.U D U | | | | | | | o.| | | | | | | | | | | e.e.e.",
+"e.e.e.e.| | | | | | | | | | | | | | | | | | | | | | | | e.e.e.e.",
+"e.e.e.e.e.| | | | | | | | | | | | | | | | | | | | | | e.e.e.e.e.",
+"e.e.e.e.e.e.| | | | | | | | | | | | | | | | | | | | e.e.e.e.e.e.",
+"e.e.e.e.e.e.e.| | | | | | | | | | | | | | | | | | e.e.e.e.e.e.e.",
+"e.e.e.e.e.e.e.e.e.| | | | | | | | | | | | | | e.e.e.e.e.e.e.e.e.",
+"e.e.e.e.e.e.e.e.e.e.e.e.| | | | | | | | e.e.e.e.e.e.e.e.e.e.e.e."
+};
diff --git a/NPLib/Core/icons/power.png b/NPLib/Core/icons/power.png
new file mode 100644
index 0000000000000000000000000000000000000000..f379b4b3c5f12c4cea5229e07259dcd0024adc10
Binary files /dev/null and b/NPLib/Core/icons/power.png differ
diff --git a/NPLib/Core/icons/power.xbm b/NPLib/Core/icons/power.xbm
new file mode 100644
index 0000000000000000000000000000000000000000..2fd52e56f9e2ad912f069b3ea684b133d39f4a5e
--- /dev/null
+++ b/NPLib/Core/icons/power.xbm
@@ -0,0 +1,117 @@
+#define power_width 128
+#define power_height 128
+static unsigned short power_bits[] = {
+   0x0000, 0x0000, 0x0000, 0xffc0, 0x03ff, 0x0000, 0x0000, 0x0000, 0x0000,
+   0x0000, 0x0000, 0xfffe, 0x7fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+   0xc000, 0xffff, 0xffff, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0xf800,
+   0xffff, 0xffff, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0xff00, 0xffff,
+   0xffff, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0xffc0, 0xffff, 0xffff,
+   0x03ff, 0x0000, 0x0000, 0x0000, 0x0000, 0xfff8, 0xffff, 0xffff, 0x1fff,
+   0x0000, 0x0000, 0x0000, 0x0000, 0xfffe, 0xffff, 0xffff, 0x7fff, 0x0000,
+   0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000,
+   0x0000, 0xc000, 0xffff, 0xffff, 0xffff, 0xffff, 0x0003, 0x0000, 0x0000,
+   0xf000, 0xffff, 0xffff, 0xffff, 0xffff, 0x000f, 0x0000, 0x0000, 0xf800,
+   0xffff, 0xffff, 0xffff, 0xffff, 0x001f, 0x0000, 0x0000, 0xfc00, 0xffff,
+   0xffff, 0xffff, 0xffff, 0x003f, 0x0000, 0x0000, 0xff00, 0xffff, 0xffff,
+   0xffff, 0xffff, 0x00ff, 0x0000, 0x0000, 0xff80, 0xffff, 0xffff, 0xffff,
+   0xffff, 0x01ff, 0x0000, 0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xffff,
+   0x03ff, 0x0000, 0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x07ff,
+   0x0000, 0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x0fff, 0x0000,
+   0x0000, 0xfff8, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fff, 0x0000, 0x0000,
+   0xfffc, 0xffff, 0xffff, 0xffff, 0xffff, 0x3fff, 0x0000, 0x0000, 0xfffe,
+   0xffff, 0x3fff, 0xfffc, 0xffff, 0x7fff, 0x0000, 0x0000, 0xffff, 0xffff,
+   0x1fff, 0xfff8, 0xffff, 0xffff, 0x0000, 0x8000, 0xffff, 0xffff, 0x0fff,
+   0xfff0, 0xffff, 0xffff, 0x0001, 0xc000, 0xffff, 0xffff, 0x0fff, 0xfff0,
+   0xffff, 0xffff, 0x0003, 0xe000, 0xffff, 0xffff, 0x0fff, 0xfff0, 0xffff,
+   0xffff, 0x0007, 0xe000, 0xffff, 0xffff, 0x0fff, 0xfff0, 0xffff, 0xffff,
+   0x0007, 0xf000, 0xffff, 0xffff, 0x0fff, 0xfff0, 0xffff, 0xffff, 0x000f,
+   0xf800, 0xffff, 0xffff, 0x0fff, 0xfff0, 0xffff, 0xffff, 0x001f, 0xfc00,
+   0xffff, 0xffff, 0x0fff, 0xfff0, 0xffff, 0xffff, 0x003f, 0xfc00, 0xffff,
+   0xffff, 0x0fff, 0xfff0, 0xffff, 0xffff, 0x003f, 0xfe00, 0xffff, 0xffff,
+   0x0fff, 0xfff0, 0xffff, 0xffff, 0x007f, 0xfe00, 0xffff, 0xffff, 0x0fff,
+   0xfff0, 0xffff, 0xffff, 0x007f, 0xff00, 0xffff, 0x3fff, 0x0ffd, 0x1ff0,
+   0xfffc, 0xffff, 0x00ff, 0xff80, 0xffff, 0x1fff, 0x0ff8, 0x1ff0, 0xfff8,
+   0xffff, 0x01ff, 0xff80, 0xffff, 0x07ff, 0x0ff8, 0x0ff0, 0xffe0, 0xffff,
+   0x01ff, 0xffc0, 0xffff, 0x03ff, 0x0ff0, 0x0ff0, 0xffc0, 0xffff, 0x03ff,
+   0xffc0, 0xffff, 0x00ff, 0x0ff0, 0x07f0, 0xff00, 0xffff, 0x03ff, 0xffc0,
+   0xffff, 0x00ff, 0x0ff0, 0x0ff0, 0xff00, 0xffff, 0x03ff, 0xffe0, 0xffff,
+   0x003f, 0x0ff8, 0x0ff0, 0xfc00, 0xffff, 0x07ff, 0xffe0, 0xffff, 0x003f,
+   0x0ffc, 0x3ff0, 0xfc00, 0xffff, 0x07ff, 0xfff0, 0xffff, 0x000f, 0x0ffe,
+   0x7ff0, 0xf000, 0xffff, 0x0fff, 0xfff0, 0xffff, 0x800f, 0x0fff, 0xfff0,
+   0xf001, 0xffff, 0x0fff, 0xfff0, 0xffff, 0xc007, 0x0fff, 0xfff0, 0xe003,
+   0xffff, 0x0fff, 0xfff8, 0xffff, 0xe003, 0x0fff, 0xfff0, 0xc007, 0xffff,
+   0x1fff, 0xfff8, 0xffff, 0xf003, 0x0fff, 0xfff0, 0xc00f, 0xffff, 0x1fff,
+   0xfff8, 0xffff, 0xf801, 0x0fff, 0xfff0, 0x801f, 0xffff, 0x1fff, 0xfffc,
+   0xffff, 0xfc00, 0x0fff, 0xfff0, 0x003f, 0xffff, 0x3fff, 0xfffc, 0xffff,
+   0xfc00, 0x0fff, 0xfff0, 0x007f, 0xffff, 0x3fff, 0xfffc, 0x7fff, 0xfe00,
+   0x0fff, 0xfff0, 0x007f, 0xfffe, 0x3fff, 0xfffe, 0x7fff, 0xff00, 0x0fff,
+   0xfff0, 0x00ff, 0xfffe, 0x7fff, 0xfffe, 0x7fff, 0xff80, 0x0fff, 0xfff0,
+   0x00ff, 0xfffe, 0x7fff, 0xfffe, 0x3fff, 0xff80, 0x0fff, 0xfff0, 0x01ff,
+   0xfffc, 0x7fff, 0xfffe, 0x3fff, 0xffc0, 0x0fff, 0xfff0, 0x03ff, 0xfffc,
+   0x7fff, 0xfffe, 0x3fff, 0xffc0, 0x0fff, 0xfff0, 0x03ff, 0xfff8, 0x7fff,
+   0xffff, 0x1fff, 0xffc0, 0x0fff, 0xfff0, 0x03ff, 0xfff8, 0xffff, 0xffff,
+   0x1fff, 0xffe0, 0x0fff, 0xfff0, 0x07ff, 0xfff8, 0xffff, 0xffff, 0x1fff,
+   0xffe0, 0x0fff, 0xfff0, 0x07ff, 0xfff8, 0xffff, 0xffff, 0x0fff, 0xffe0,
+   0x0fff, 0xfff0, 0x07ff, 0xfff0, 0xffff, 0xffff, 0x1fff, 0xfff0, 0x0fff,
+   0xfff0, 0x07ff, 0xfff8, 0xffff, 0xffff, 0x0fff, 0xffe0, 0x0fff, 0xfff0,
+   0x0fff, 0xfff0, 0xffff, 0xffff, 0x0fff, 0xfff0, 0x0fff, 0xfff0, 0x0fff,
+   0xfff0, 0xffff, 0xffff, 0x0fff, 0xfff0, 0x0fff, 0xfff0, 0x0fff, 0xfff0,
+   0xffff, 0xffff, 0x0fff, 0xfff0, 0x0fff, 0xfff0, 0x0fff, 0xfff0, 0xffff,
+   0xffff, 0x0fff, 0xfff0, 0x0fff, 0xfff0, 0x0fff, 0xfff0, 0xffff, 0xffff,
+   0x0fff, 0xfff0, 0x0fff, 0xfff0, 0x0fff, 0xfff0, 0xffff, 0xffff, 0x0fff,
+   0xfff0, 0x0fff, 0xfff0, 0x0fff, 0xfff0, 0xffff, 0xffff, 0x0fff, 0xfff0,
+   0x1fff, 0xfff8, 0x0fff, 0xfff0, 0xffff, 0xffff, 0x0fff, 0xfff0, 0x3fff,
+   0xfffc, 0x0fff, 0xfff0, 0xffff, 0xffff, 0x0fff, 0xfff0, 0xffff, 0xffff,
+   0x07ff, 0xfff0, 0xffff, 0xffff, 0x1fff, 0xffe0, 0xffff, 0xffff, 0x0fff,
+   0xfff0, 0xffff, 0xffff, 0x0fff, 0xffe0, 0xffff, 0xffff, 0x07ff, 0xfff8,
+   0xffff, 0xffff, 0x1fff, 0xffe0, 0xffff, 0xffff, 0x07ff, 0xfff8, 0xffff,
+   0xffff, 0x1fff, 0xffe0, 0xffff, 0xffff, 0x07ff, 0xfff8, 0xffff, 0xffff,
+   0x1fff, 0xffc0, 0xffff, 0xffff, 0x03ff, 0xfff8, 0xffff, 0xfffe, 0x3fff,
+   0xffc0, 0xffff, 0xffff, 0x03ff, 0xfffc, 0x7fff, 0xfffe, 0x3fff, 0xff80,
+   0xffff, 0xffff, 0x01ff, 0xfffc, 0x7fff, 0xfffe, 0x3fff, 0xff80, 0xffff,
+   0xffff, 0x01ff, 0xfffc, 0x7fff, 0xfffe, 0x7fff, 0xff00, 0xffff, 0xffff,
+   0x01ff, 0xfffc, 0x7fff, 0xfffe, 0x7fff, 0xff00, 0xffff, 0xffff, 0x00ff,
+   0xfffe, 0x7fff, 0xfffc, 0x7fff, 0xfe00, 0xffff, 0xffff, 0x007f, 0xffff,
+   0x3fff, 0xfffc, 0xffff, 0xfc00, 0xffff, 0xffff, 0x003f, 0xffff, 0x3fff,
+   0xfffc, 0xffff, 0xfc01, 0xffff, 0xffff, 0x003f, 0xffff, 0x3fff, 0xfff8,
+   0xffff, 0xf801, 0xffff, 0xffff, 0x801f, 0xffff, 0x1fff, 0xfff8, 0xffff,
+   0xf003, 0xffff, 0xffff, 0xc00f, 0xffff, 0x1fff, 0xfff8, 0xffff, 0xe003,
+   0xffff, 0xffff, 0xc007, 0xffff, 0x1fff, 0xfff0, 0xffff, 0xc007, 0xffff,
+   0xffff, 0xe003, 0xffff, 0x0fff, 0xfff0, 0xffff, 0x000f, 0xffff, 0xffff,
+   0xf000, 0xffff, 0x0fff, 0xfff0, 0xffff, 0x001f, 0xfffe, 0x7fff, 0xf800,
+   0xffff, 0x0fff, 0xffe0, 0xffff, 0x001f, 0xfff8, 0x1fff, 0xfc00, 0xffff,
+   0x07ff, 0xffe0, 0xffff, 0x007f, 0xffe0, 0x07ff, 0xfc00, 0xffff, 0x07ff,
+   0xffc0, 0xffff, 0x007f, 0xff80, 0x00ff, 0xff00, 0xffff, 0x03ff, 0xffc0,
+   0xffff, 0x01ff, 0xe800, 0x0017, 0xff80, 0xffff, 0x03ff, 0xffc0, 0xffff,
+   0x03ff, 0x0000, 0x0000, 0xffc0, 0xffff, 0x03ff, 0xff80, 0xffff, 0x07ff,
+   0x0000, 0x0000, 0xffe0, 0xffff, 0x01ff, 0xff80, 0xffff, 0x1fff, 0x0000,
+   0x0000, 0xfff8, 0xffff, 0x01ff, 0xff00, 0xffff, 0x7fff, 0x0000, 0x0000,
+   0xfffc, 0xffff, 0x00ff, 0xfe00, 0xffff, 0xffff, 0x0000, 0x8000, 0xffff,
+   0xffff, 0x007f, 0xfe00, 0xffff, 0xffff, 0x0007, 0xc000, 0xffff, 0xffff,
+   0x007f, 0xfc00, 0xffff, 0xffff, 0x003f, 0xfc00, 0xffff, 0xffff, 0x003f,
+   0xfc00, 0xffff, 0xffff, 0x05ff, 0xffa0, 0xffff, 0xffff, 0x003f, 0xf800,
+   0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x001f, 0xf000, 0xffff,
+   0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x000f, 0xe000, 0xffff, 0xffff,
+   0xffff, 0xffff, 0xffff, 0xffff, 0x0007, 0xe000, 0xffff, 0xffff, 0xffff,
+   0xffff, 0xffff, 0xffff, 0x0007, 0xc000, 0xffff, 0xffff, 0xffff, 0xffff,
+   0xffff, 0xffff, 0x0003, 0x8000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+   0xffff, 0x0001, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+   0x0000, 0x0000, 0xfffe, 0xffff, 0xffff, 0xffff, 0xffff, 0x7fff, 0x0000,
+   0x0000, 0xfffc, 0xffff, 0xffff, 0xffff, 0xffff, 0x3fff, 0x0000, 0x0000,
+   0xfff8, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fff, 0x0000, 0x0000, 0xfff0,
+   0xffff, 0xffff, 0xffff, 0xffff, 0x0fff, 0x0000, 0x0000, 0xffe0, 0xffff,
+   0xffff, 0xffff, 0xffff, 0x07ff, 0x0000, 0x0000, 0xffc0, 0xffff, 0xffff,
+   0xffff, 0xffff, 0x03ff, 0x0000, 0x0000, 0xff80, 0xffff, 0xffff, 0xffff,
+   0xffff, 0x01ff, 0x0000, 0x0000, 0xff00, 0xffff, 0xffff, 0xffff, 0xffff,
+   0x00ff, 0x0000, 0x0000, 0xfc00, 0xffff, 0xffff, 0xffff, 0xffff, 0x003f,
+   0x0000, 0x0000, 0xf800, 0xffff, 0xffff, 0xffff, 0xffff, 0x001f, 0x0000,
+   0x0000, 0xf000, 0xffff, 0xffff, 0xffff, 0xffff, 0x000f, 0x0000, 0x0000,
+   0xc000, 0xffff, 0xffff, 0xffff, 0xffff, 0x0003, 0x0000, 0x0000, 0x0000,
+   0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0xfffe,
+   0xffff, 0xffff, 0x7fff, 0x0000, 0x0000, 0x0000, 0x0000, 0xfff8, 0xffff,
+   0xffff, 0x1fff, 0x0000, 0x0000, 0x0000, 0x0000, 0xffc0, 0xffff, 0xffff,
+   0x03ff, 0x0000, 0x0000, 0x0000, 0x0000, 0xff00, 0xffff, 0xffff, 0x00ff,
+   0x0000, 0x0000, 0x0000, 0x0000, 0xf800, 0xffff, 0xffff, 0x001f, 0x0000,
+   0x0000, 0x0000, 0x0000, 0xc000, 0xffff, 0xffff, 0x0003, 0x0000, 0x0000,
+   0x0000, 0x0000, 0x0000, 0xfffe, 0x7fff, 0x0000, 0x0000, 0x0000, 0x0000,
+   0x0000, 0x0000, 0xffc0, 0x03ff, 0x0000, 0x0000, 0x0000 };
diff --git a/NPLib/Core/icons/power.xpm b/NPLib/Core/icons/power.xpm
new file mode 100644
index 0000000000000000000000000000000000000000..d5dd4c059fabf724054552f6cc0e44e003c22525
--- /dev/null
+++ b/NPLib/Core/icons/power.xpm
@@ -0,0 +1,134 @@
+/* XPM */
+static char *power[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 96 2 ",
+"   c #B25555",
+".  c #BA5555",
+"X  c #BB5757",
+"o  c #BE5757",
+"O  c #B25E5E",
+"+  c #B45D5D",
+"@  c #B65D5D",
+"#  c #B55E5E",
+"$  c #BE5858",
+"%  c #B46565",
+"&  c #B86969",
+"*  c #BA6969",
+"=  c #BD6B6B",
+"-  c #BE7B7B",
+";  c #C15858",
+":  c #C25959",
+">  c #C35959",
+",  c #C45959",
+"<  c #C55959",
+"1  c #C45A5A",
+"2  c #C55B5B",
+"3  c #C65A5A",
+"4  c #C65B5B",
+"5  c #C75B5B",
+"6  c #C55C5C",
+"7  c #C65C5C",
+"8  c #C75C5C",
+"9  c #C75D5D",
+"0  c #C16262",
+"q  c #C96161",
+"w  c #C96262",
+"e  c #C86363",
+"r  c #C86565",
+"t  c #CA6464",
+"y  c #CA6565",
+"u  c #C96666",
+"i  c #CA6666",
+"p  c #CB6767",
+"a  c #CA6A6A",
+"s  c #CC6B6B",
+"d  c #CD6E6E",
+"f  c #CD6F6F",
+"g  c #CE6F6F",
+"h  c #CA7070",
+"j  c #CE7171",
+"k  c #CD7272",
+"l  c #CF7272",
+"z  c #C47D7D",
+"x  c #CB8080",
+"c  c #C58888",
+"v  c #C48989",
+"b  c #CE8D8D",
+"n  c #D48383",
+"m  c #D98F8F",
+"M  c #D99191",
+"N  c #D6A7A7",
+"B  c #DDBDBD",
+"V  c #DEBDBD",
+"C  c #E2ABAB",
+"Z  c #E3BFBF",
+"A  c #E8BCBC",
+"S  c #E5C7C7",
+"D  c #EAC1C1",
+"F  c #EAC2C2",
+"G  c #EAC3C3",
+"H  c #E6CFCF",
+"J  c #E7CFCF",
+"K  c #EDCACA",
+"L  c #EACECE",
+"P  c #EECFCF",
+"I  c #ECD7D7",
+"U  c #EDDCDC",
+"Y  c #F0D2D2",
+"T  c #F0D3D3",
+"R  c #F1DDDD",
+"E  c #F4DEDE",
+"W  c #F0E1E1",
+"Q  c #F6E4E4",
+"!  c #F4EAEA",
+"~  c #F4EBEB",
+"^  c #F7EEEE",
+"/  c #F8EBEB",
+"(  c #F8ECEC",
+")  c #F9ECEC",
+"_  c #F9EDED",
+"`  c #F9EFEF",
+"'  c #FAEFEF",
+"]  c #FBF8F8",
+"[  c #FDF9F9",
+"{  c #FDFAFA",
+"}  c #FCFBFB",
+"|  c #FEFCFC",
+" . c #FEFDFD",
+".. c #FFFEFE",
+"X. c white",
+"o. c None",
+/* pixels */
+"o.o.o.o.o.o.o.o.o.o.o.o.8 8 8 8 8 8 8 8 o.o.o.o.o.o.o.o.o.o.o.o.",
+"o.o.o.o.o.o.o.o.o.8 8 8 8 8 8 8 8 8 8 8 8 8 8 o.o.o.o.o.o.o.o.o.",
+"o.o.o.o.o.o.o.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 o.o.o.o.o.o.o.",
+"o.o.o.o.o.o.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 o.o.o.o.o.o.",
+"o.o.o.o.o.8 8 8 8 8 8 8 8 8 8 i i 8 8 8 8 8 8 8 8 8 8 o.o.o.o.o.",
+"o.o.o.o.8 8 8 8 8 8 8 8 8 8 i K K i 8 8 8 8 8 8 8 8 8 8 o.o.o.o.",
+"o.o.o.8 8 8 8 8 8 8 8 8 8 8 j / / d 8 8 8 8 8 8 8 8 8 8 8 o.o.o.",
+"o.o.8 8 8 8 8 8 8 8 8 i 5 8 j / / j 8 i i 8 8 8 8 8 8 8 8 8 o.o.",
+"o.o.8 8 8 8 8 8 8 8 n K A q d / / d d Y Y n 9 9 8 8 8 8 8 8 o.o.",
+"o.8 8 8 8 8 8 8 8 m / X.J q d / / d i I X./ m 9 8 8 8 8 8 8 8 o.",
+"o.8 8 8 8 8 8 8 n / X.B & 8 j / / j , % A X./ z 8 8 8 8 8 8 8 o.",
+"o.8 8 8 8 8 8 i Y X.B @ 8 5 j / / j 8 o @ B X.I i 8 8 8 8 8 8 o.",
+"8 8 8 8 8 8 8 M X.U = 8 8 8 d / / j 5 5 , = U X.m 8 8 8 8 8 8 8 ",
+"8 8 8 8 8 8 8 D X.N 8 5 8 8 j / / j 5 5 8 8 N X.D 8 8 8 8 8 8 8 ",
+"8 8 8 8 8 8 i E X.z 5 5 8 , d / / j 5 5 5 5 z X.E i 8 8 8 8 8 8 ",
+"8 8 8 8 8 8 d / ~ d 5 5 8 8 d / / j 5 5 5 5 j ~ / d 8 8 8 8 8 8 ",
+"8 8 8 8 8 8 d ~ ~ d 8 8 8 8 i S J i 8 8 5 5 d / / d 8 8 8 8 8 8 ",
+"8 8 8 8 8 8 i E X.n , 8 8 8 8 @ @ 8 8 8 5 , n X.E i 8 8 8 8 8 8 ",
+"8 8 8 8 8 8 , A X.C 8 8 8 8 5 8 , 8 8 8 8 8 C X.A 8 8 8 8 8 8 8 ",
+"8 8 8 8 8 8 , b X.W d 8 8 8 5 5 8 8 8 8 8 j W X.b 8 8 8 8 8 8 8 ",
+"o.8 8 8 8 8 8 & K X.D i 8 8 8 5 8 8 8 8 i D X.J q 8 8 8 8 8 8 o.",
+"o.8 8 8 8 8 8 8 z ~ X.D d 8 , 5 8 , 8 d D X.~ z $ 8 8 8 8 8 8 o.",
+"o.8 8 8 8 8 8 8 $ v ~ X.W C n j d n C E X.~ c o 8 8 8 8 8 8 8 o.",
+"o.o.8 8 8 8 8 8 8 o - J X.X.X.~ / X.X.X.J - o 8 8 8 8 8 8 8 o.o.",
+"o.o.8 8 8 8 8 8 8 8 o @ v B U ~ ~ U B v @ $ 8 8 8 8 8 8 8 8 o.o.",
+"o.o.o.8 8 8 8 8 8 8 8 8 .   @ % % O   . 8 8 8 8 8 8 8 8 8 o.o.o.",
+"o.o.o.o.8 8 8 8 8 8 8 8 8 8 8 $ $ 8 8 8 8 8 8 8 8 8 8 8 o.o.o.o.",
+"o.o.o.o.o.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 o.o.o.o.o.",
+"o.o.o.o.o.o.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 o.o.o.o.o.o.",
+"o.o.o.o.o.o.o.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 o.o.o.o.o.o.o.",
+"o.o.o.o.o.o.o.o.o.8 8 8 8 8 8 8 8 8 8 8 8 8 8 o.o.o.o.o.o.o.o.o.",
+"o.o.o.o.o.o.o.o.o.o.o.o.8 8 8 8 8 8 8 8 o.o.o.o.o.o.o.o.o.o.o.o."
+};
diff --git a/NPLib/Core/icons/upload.png b/NPLib/Core/icons/upload.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ce606b0c1aecd8435021cac323b25f0fc5ef3fb
Binary files /dev/null and b/NPLib/Core/icons/upload.png differ
diff --git a/NPLib/Sharc/TSharcSpectra.cxx b/NPLib/Sharc/TSharcSpectra.cxx
index f459114fcdb590fac0cfc8f49c868fd1da53130d..a0177b8e16a622466f157e8b36baef3559427c19 100644
--- a/NPLib/Sharc/TSharcSpectra.cxx
+++ b/NPLib/Sharc/TSharcSpectra.cxx
@@ -67,46 +67,48 @@ TSharcSpectra::~TSharcSpectra(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TSharcSpectra::InitRawSpectra(){
-  TCanvas* c1 = new TCanvas("SharcRaw","Sharc Raw");
-  TCanvas* c2 = new TCanvas("SharcRawPAD","Sharc Raw PAD");
 
-  c1->Divide(fNumberOfDetector,4);
-  c2->Divide(fNumberOfDetector,2);
   string name;
   for (unsigned int i = 0; i < fNumberOfDetector; i++) { // loop on number of detectors
+  name = "SharcRaw"+NPL::itoa(i+1);
+  TCanvas* c1 = new TCanvas(name.c_str(),name.c_str());
+  c1->Divide(3,2);
+  int i1 = 0;  
     // STR_FRONT_E_RAW
-    c1->cd(i+2);
+    c1->cd(++i1);
     name = "SHARC"+NPL::itoa(i+1)+"_STR_FRONT_E_RAW";
     AddHisto2D(name, name, fStripFront, 1, fStripFront+1, 512, 0, 8192, "SHARC/RAW/STR_FRONT_E")->Draw("colz");
 
     // STR_BACK_E_RAW
-    c1->cd(i+3);
+    c1->cd(++i1);
     name = "SHARC"+NPL::itoa(i+1)+"_STR_BACK_E_RAW";
     AddHisto2D(name, name, fStripBack, 1, fStripBack+1, 512, 0, 8192, "SHARC/RAW/STR_BACK_E")->Draw("colz");
 
     // PAD_E_RAW
-    c2->cd(i+5);
+    c1->cd(++i1);
     name = "SHARC"+NPL::itoa(i+1)+"_PAD_E_RAW";
     AddHisto1D(name, name, 512, 0, 16384, "SHARC/RAW/PAD_E")->Draw("");
 
     // STR_FRONT_RAW_MULT
-    c1->cd(i+4);
+    c1->cd(++i1);
     name = "SHARC"+NPL::itoa(i+1)+"_STR_FRONT_RAW_MULT";
     AddHisto1D(name, name, fStripFront, 1, fStripFront+1, "SHARC/RAW/MULT")->Draw("");
-
+    gPad->SetLogy();
+  
     // STR_BACK_RAW_MULT
-    c1->cd(i+5);
+    c1->cd(++i1);
     name = "SHARC"+NPL::itoa(i+1)+"_STR_BACK_RAW_MULT";
     AddHisto1D(name, name, fStripFront, 1, fStripFront+1, "SHARC/RAW/MULT")->Draw("");
+    gPad->SetLogy();
 
     // PAD_RAW_MULT
-    c2->cd(i+2);
+    c1->cd(++i1);
     name = "SHARC"+NPL::itoa(i+1)+"_PAD_RAW_MULT";
     AddHisto1D(name, name, fNumberOfDetector, 1, fNumberOfDetector+1, "SHARC/RAW/MULT")->Draw("");
-
+    gPad->SetLogy();
+    
+    AddCanvas(c1);  
   } // end loop on number of detectors
-  AddCanvas(c1);  
-  AddCanvas(c2);
 }
 
 ////////////////////////////////////////////////////////////////////////////////