diff --git a/_doc/documentation.dox b/_doc/documentation.dox
index 716e6c88bebe1786a9e3e799aa473ef57bb1c585..88c3c8e27e2e14f1492a0e4609223a104b7f5979 100644
--- a/_doc/documentation.dox
+++ b/_doc/documentation.dox
@@ -81,7 +81,7 @@ using namespace mxgui;
 
 ENTRY()
 {
-    Display& display=Display::instance();
+    Display& display=DisplayManager::instance().getDisplay();
     {
         DrawingContext dc(display);
         dc.write(Point(0,0),"Hello world!");
@@ -176,7 +176,7 @@ using namespace mxgui;
 ENTRY()
 {
     {
-        DrawingContext dc(Display::instance());
+        DrawingContext dc(DisplayManager::instance().getDisplay());
         dc.drawImage(Point(0,0),test);
     }
     for(;;) ;
@@ -255,7 +255,7 @@ using namespace mxgui;
 ENTRY()
 {
     {
-        DrawingContext dc(Display::instance());
+        DrawingContext dc(DisplayManager::instance().getDisplay());
         ResourceImage image("test");
         dc.drawImage(Point(0,0),image);
     }
diff --git a/_examples/benchmark/bm_main.cpp b/_examples/benchmark/bm_main.cpp
index be701315044a2940e34ac3dd10d845805d577214..6c8eb7da25b30bfe9f67f83b3c5e5ee397fea800 100644
--- a/_examples/benchmark/bm_main.cpp
+++ b/_examples/benchmark/bm_main.cpp
@@ -36,7 +36,7 @@ using namespace mxgui;
 
 int main()
 {
-    Display& display=Display::instance();
+    Display& display=DisplayManager::instance().getDisplay();
     Benchmark benchmark(display);
     benchmark.start();
 
@@ -45,7 +45,7 @@ int main()
     display.turnOff();
     #elif defined(_BOARD_SONY_NEWMAN)
     while(POWER_BTN_PRESS_Pin::value()==0) Thread::sleep(100);
-    Display::instance().turnOff();
+    display.turnOff();
     #else //_BOARD_MP3V2
     for(;;) Thread::sleep(100);
     #endif //_BOARD_MP3V2
diff --git a/_examples/clipped-image/clipped_image.cpp b/_examples/clipped-image/clipped_image.cpp
index 1e69356afa073aef8160e908477fda84b96ddfe1..0378ee98b117aea99845b626b08f05a1bd2c1dc6 100644
--- a/_examples/clipped-image/clipped_image.cpp
+++ b/_examples/clipped-image/clipped_image.cpp
@@ -94,7 +94,7 @@ void bootMessage(Display& display)
 
 ENTRY()
 {
-    Display& display=Display::instance();
+    Display& display=DisplayManager::instance().getDisplay();
     bootMessage(display);
 
     TgaImage img("dis.tga");
diff --git a/_examples/drawboard/drawboard.cpp b/_examples/drawboard/drawboard.cpp
index f55ba9709a05fc6c40cc03875f4cfafe347085de..142423bbbd21643407dee68a8e0744e4f7005ab3 100644
--- a/_examples/drawboard/drawboard.cpp
+++ b/_examples/drawboard/drawboard.cpp
@@ -85,7 +85,7 @@ void DrawLegend(DrawingContext& dc)
 
 ENTRY()
 {
-    Display& display=Display::instance();
+    Display& display=DisplayManager::instance().getDisplay();
     InputHandler& backend=InputHandler::instance();
     Point prev(0, 0);
     Color color = white;
diff --git a/_examples/hello/hello_world.cpp b/_examples/hello/hello_world.cpp
index e3b1df8e52b543d3bbf4c76d79ae5bebe54d7c57..3c140a5493c078de0ddf84accf00805031b121c0 100644
--- a/_examples/hello/hello_world.cpp
+++ b/_examples/hello/hello_world.cpp
@@ -7,7 +7,7 @@ using namespace mxgui;
 ENTRY()
 {
 	{
-		DrawingContext dc(Display::instance());
+		DrawingContext dc(DisplayManager::instance().getDisplay());
 		dc.write(Point(0,0),"Hello world");
 	}
 	for(;;) ;
diff --git a/_examples/particles/particles.cpp b/_examples/particles/particles.cpp
index 1945b9b5926d357fd274593f43e26703ffb74769..14da8f43e9678fe1c203fa641c313d0e9cd8f31a 100644
--- a/_examples/particles/particles.cpp
+++ b/_examples/particles/particles.cpp
@@ -85,7 +85,7 @@ static bool particleAnimation(Particle *particles)
     static const int cosTab[]={0, 1, 1, 1, 0,-1,-1,-1};
     static const int sinTab[]={1, 1, 0,-1,-1,-1, 0, 1};
 
-    Display& disp=Display::instance();
+    Display& disp=DisplayManager::instance().getDisplay();
     static int state=0;
     if(state==0)
     {
@@ -120,7 +120,7 @@ static bool particleAnimation(Particle *particles)
  */
 static void drawNextFrame(Particle **sorted, Point *oldPosition)
 {
-    DrawingContext dc(Display::instance());
+    DrawingContext dc(DisplayManager::instance().getDisplay());
     const Point last(dc.getWidth(),dc.getHeight());
     dc.beginPixel();
     int a=0, b=0;
@@ -162,7 +162,7 @@ static void printFps(int fps, int cpu)
 {
     char line[32];
     siprintf(line,"%d fps  %d%% cpu          ",fps,cpu);
-    DrawingContext dc(Display::instance());
+    DrawingContext dc(DisplayManager::instance().getDisplay());
     dc.write(Point(0,0),line);
 }
 
diff --git a/_examples/plot/main.cpp b/_examples/plot/main.cpp
index 8de6087611fbe358bc82452c6a454c64f6c476a6..97c4ba9215a150eb1627674f1a331f76b0f4f71d 100644
--- a/_examples/plot/main.cpp
+++ b/_examples/plot/main.cpp
@@ -18,7 +18,7 @@ ENTRY()
     dataset.push_back(Dataset(data1,red));
     dataset.push_back(Dataset(data2,green));
     
-    Display& display=Display::instance();
+    Display& display=DisplayManager::instance().getDisplay();
     SimplePlot plot1(Point(0,0),Point(239,200));
     
     for(;;i+=2)
diff --git a/_examples/sony-newman/systeminfo/systeminfo.cpp b/_examples/sony-newman/systeminfo/systeminfo.cpp
index b2e5c945f723767730950318f87a289ca17d7705..46a8c4196410388b8ea888b07db59ab477b33a87 100644
--- a/_examples/sony-newman/systeminfo/systeminfo.cpp
+++ b/_examples/sony-newman/systeminfo/systeminfo.cpp
@@ -12,7 +12,7 @@ int main()
 {
     Rtc& rtc=Rtc::instance();
     InputHandler& input=InputHandler::instance();
-    Display& display=Display::instance();
+    Display& display=DisplayManager::instance().getDisplay();
     struct tm start;
     start.tm_sec=30;
     start.tm_min=7;
@@ -43,7 +43,7 @@ int main()
                                             t.tm_hour,t.tm_min,t.tm_sec);
         siprintf(k,"%#x",rtc.notSetYet());
 		{
-			DrawingContext dc(Display::instance());
+			DrawingContext dc(display);
 			dc.clear(black);
 			dc.write(Point(0,0),usb?"USB connected":"USB disconnected");
 			dc.write(Point(0,12),chg?"Charging":"Not charging");
diff --git a/_examples/sony-newman/tea-time/boot_message.cpp b/_examples/sony-newman/tea-time/boot_message.cpp
index b2f4da87fae66a7128f823fda4715e42f53b23bd..f73c4d10f1bde7a031b44ca7de446e6b40fc2af3 100644
--- a/_examples/sony-newman/tea-time/boot_message.cpp
+++ b/_examples/sony-newman/tea-time/boot_message.cpp
@@ -61,7 +61,7 @@ static void blinkingDot(Display& display, Point p)
 
 void bootMessage()
 {
-    Display& display=Display::instance();
+    Display& display=DisplayManager::instance().getDisplay();
     const char s0[]="Miosix";
     const char s1[]="We do what we must";
     const char s2[]="Because we can";
diff --git a/_examples/sony-newman/tea-time/main.cpp b/_examples/sony-newman/tea-time/main.cpp
index 0e3acfbda43916318dc477469d382cf700239c7f..0185c17dadfa5e970d538d86b4df891ba5e662dd 100644
--- a/_examples/sony-newman/tea-time/main.cpp
+++ b/_examples/sony-newman/tea-time/main.cpp
@@ -43,10 +43,10 @@ ENTRY()
     power.showBatterIcon(true);
     configureTime();
     {
-        DrawingContext dc(Display::instance());
+        DrawingContext dc(DisplayManager::instance().getDisplay());
         dc.clear(black);
     }
     //power.showTime(true);
     teapotApp();
-    Display::instance().turnOff();
+    DisplayManager::instance().getDisplay().turnOff();
 }
diff --git a/_examples/sony-newman/tea-time/power_manager.cpp b/_examples/sony-newman/tea-time/power_manager.cpp
index e32e0daab01e8ac0ac4a81d25e0c874c94aff76c..65072b17d16f0483304fc3d9b305035687d8f66a 100644
--- a/_examples/sony-newman/tea-time/power_manager.cpp
+++ b/_examples/sony-newman/tea-time/power_manager.cpp
@@ -205,7 +205,7 @@ void PowerManager::adjustBrightness()
     #endif //_MIOSIX
 }
 
-PowerManager::PowerManager() : display(Display::instance()),
+PowerManager::PowerManager() : display(DisplayManager::instance().getDisplay()),
 #ifdef _MIOSIX
         pmu(PowerManagement::instance()), light(LightSensor::instance()),
         rtc(Rtc::instance()),
diff --git a/_examples/sony-newman/tea-time/teapot_app.cpp b/_examples/sony-newman/tea-time/teapot_app.cpp
index 54f2250d633ff628f43fb8f417419846ecebe8ab..55ed96096288b95458241513fab4ba0454a29037 100644
--- a/_examples/sony-newman/tea-time/teapot_app.cpp
+++ b/_examples/sony-newman/tea-time/teapot_app.cpp
@@ -169,7 +169,7 @@ static RenderingEngine *configureWireframe()
 
 void teapotApp()
 {
-    Display& display=Display::instance();
+    Display& display=DisplayManager::instance().getDisplay();
     InputHandler& input=InputHandler::instance();
     PowerManager& power=PowerManager::instance();
     power.showBatterIcon(true);
diff --git a/_examples/sony-newman/tea-time/time_config.cpp b/_examples/sony-newman/tea-time/time_config.cpp
index d788f8864b70f6a8859daeebd844867099433ea7..c846fc20eb1bfc9ceccbd2a6df386d492f63ded5 100644
--- a/_examples/sony-newman/tea-time/time_config.cpp
+++ b/_examples/sony-newman/tea-time/time_config.cpp
@@ -199,7 +199,7 @@ int inputWeekDay(Display& display, InputHandler& input)
 
 void configureTime()
 {
-    Display& display=Display::instance();
+    Display& display=DisplayManager::instance().getDisplay();
     InputHandler& input=InputHandler::instance();
     
     NumberWithRange day(1,1,31);
diff --git a/_examples/sony-newman/touchtest/touch_test.cpp b/_examples/sony-newman/touchtest/touch_test.cpp
index 11d007d6f26bf25b408794d504dbf6bd47837685..08b07abd1f48cf07439bbd505702789b85d1381e 100644
--- a/_examples/sony-newman/touchtest/touch_test.cpp
+++ b/_examples/sony-newman/touchtest/touch_test.cpp
@@ -8,7 +8,7 @@ using namespace mxgui;
 
 int main()
 {
-    Display& display=Display::instance();
+    Display& display=DisplayManager::instance().getDisplay();
     const short w=display.getWidth();
     const short h=display.getHeight();
     InputHandler& input=InputHandler::instance();
diff --git a/_examples/teapot/bresenham_fsm.cpp b/_examples/teapot/bresenham_fsm.cpp
index d7d96d443929db337bd86389766ee1aa928338bf..2f82b15b19b687e17a726dc2a3a35de50de1177b 100644
--- a/_examples/teapot/bresenham_fsm.cpp
+++ b/_examples/teapot/bresenham_fsm.cpp
@@ -155,7 +155,7 @@ using namespace mxgui;
 
 void ll(float angle)
 {
-    DrawingContext dc(Display::instance());
+    DrawingContext dc(DisplayManager::instance().getDisplay());
     dc.clear(0);
     Point a(240/2,320/2),b(240/2+100*std::cos(angle),320/2+100*std::sin(angle));
 
diff --git a/_examples/teapot/teapot.cpp b/_examples/teapot/teapot.cpp
index 73df225fcb082d656dda909fe9d26bc58bb1d79b..b9e06d35cfa741d6b99b1cc1addf7a45b747c353 100644
--- a/_examples/teapot/teapot.cpp
+++ b/_examples/teapot/teapot.cpp
@@ -49,7 +49,7 @@ const Point buttonFpsB(220,300);
  */
 static void printFps(int fps, int cpu)
 {
-    DrawingContext dc(Display::instance());
+    DrawingContext dc(DisplayManager::instance().getDisplay());
     dc.setFont(droid21);
     dc.setTextColor(green,black);
     char line[16];
@@ -167,7 +167,7 @@ ENTRY()
 {
     //Initial drawing, print fixed strings, buttons, etc.
     {
-        DrawingContext dc(Display::instance());
+        DrawingContext dc(DisplayManager::instance().getDisplay());
         dc.setTextColor(black,grey);
         dc.clear(Point(0,160),Point(239,319),grey);
         shadowRectangle(dc,Point(0,0),Point(239,159));
@@ -201,7 +201,7 @@ ENTRY()
     {
         Matrix3f xfm=xrot(M_PI/8-M_PI/2)*zrot(angle)*scale(105+30*sin(angle/4));
         engine->setTransformMatrix(xfm);
-        engine->render(Display::instance());
+        engine->render(DisplayManager::instance().getDisplay());
         printFps(fps.getFps(),fps.getCpuUsed());
         fps.sleepBetweenFrames();
 
@@ -215,12 +215,12 @@ ENTRY()
             case EventType::TouchDown:
                 if(within(e.getPoint(),buttonFpsA,buttonFpsB))
                 {
-                    DrawingContext dc(Display::instance());
+                    DrawingContext dc(DisplayManager::instance().getDisplay());
                     drawButton(dc,buttonFpsA,buttonFpsB,
                             fpsStr[fpsOption],true);
                 } else if(within(e.getPoint(),buttonModeA,buttonModeB))
                 {
-                    DrawingContext dc(Display::instance());
+                    DrawingContext dc(DisplayManager::instance().getDisplay());
                     drawButton(dc,buttonModeA,buttonModeB,
                             renderingStr[renderingOption],true);
                 }
@@ -237,7 +237,7 @@ ENTRY()
                         fps.setFpsCap(10);
                     }
                     {
-                        DrawingContext dc(Display::instance());
+                        DrawingContext dc(DisplayManager::instance().getDisplay());
                         drawButton(dc,buttonFpsA,buttonFpsB,
                                 fpsStr[fpsOption],false);
                     }
@@ -253,7 +253,7 @@ ENTRY()
                         engine=configureWireframe();
                     }
                     {
-                        DrawingContext dc(Display::instance());
+                        DrawingContext dc(DisplayManager::instance().getDisplay());
                         drawButton(dc,buttonModeA,buttonModeB,
                                 renderingStr[renderingOption],false);
                     }
@@ -266,7 +266,7 @@ ENTRY()
     quit:;
     delete engine;
     {
-        DrawingContext dc(Display::instance()); //Restore defaults
+        DrawingContext dc(DisplayManager::instance().getDisplay()); //Restore defaults
         dc.setFont(droid11);
         dc.setTextColor(white,black);
     }
diff --git a/_examples/teapot/triangle_fsm.cpp b/_examples/teapot/triangle_fsm.cpp
index 2aefce18becfef087749b642f7db88a5246cb854..4415b172840303e5fb274541c4ee29090bb070d8 100644
--- a/_examples/teapot/triangle_fsm.cpp
+++ b/_examples/teapot/triangle_fsm.cpp
@@ -178,7 +178,7 @@ ENTRY()
             *(xfmvertices+3*i+2)=z;
         }
         {
-            DrawingContext dc(Display::instance());
+            DrawingContext dc(DisplayManager::instance().getDisplay());
             dc.clear(black);
             short minya=min(xfmvertices[1],min(xfmvertices[4],xfmvertices[7]));
             short minyb=min(xfmvertices[4],min(xfmvertices[7],xfmvertices[10]));
diff --git a/_examples/touch_test/touch_test.cpp b/_examples/touch_test/touch_test.cpp
index 60762c6f171763d4fc410bc4956d837982a75d49..1d369434452176369b7e315d2d250a9d547cff0e 100644
--- a/_examples/touch_test/touch_test.cpp
+++ b/_examples/touch_test/touch_test.cpp
@@ -37,7 +37,7 @@ using namespace mxgui;
 
 ENTRY()
 {
-    Display& display=Display::instance();
+    Display& display=DisplayManager::instance().getDisplay();
     InputHandler& backend=InputHandler::instance();
     short oldX=0,oldY=0;
     for(;;)
diff --git a/_tools/winsimulator/WinSimulator.cpp b/_tools/winsimulator/WinSimulator.cpp
index fff9cca48703c4f6ac4eb33ee46da6d30997f1ab..f098788ecb3a5300d608388710bcf4af9f8ed8dc 100644
--- a/_tools/winsimulator/WinSimulator.cpp
+++ b/_tools/winsimulator/WinSimulator.cpp
@@ -116,7 +116,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance,
 
     hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_DRAWINGCONTEXT));
 
-    mxgui::Display& display = mxgui::Display::instance();
+    mxgui::Display& display = mxgui::DisplayManager::instance().getDisplay();
     {
         mxgui::DrawingContext dc(display);
         dc.beginPixel();
diff --git a/_tools/winsimulator/winbackend.cpp b/_tools/winsimulator/winbackend.cpp
index cb3bc9ae56439e955f592948481134add5013073..da0c5313f52bd322169f8804b78c4bc00a3d1844 100644
--- a/_tools/winsimulator/winbackend.cpp
+++ b/_tools/winsimulator/winbackend.cpp
@@ -54,7 +54,7 @@ void WinBackend::start()
     if(started==true) return;
 
     {
-        mxgui::Display& display = mxgui::Display::instance();
+        mxgui::Display& display = mxgui::DisplayManager::instance().getDisplay();
         mxgui::DrawingContext dc(display);
         dc.beginPixel();
         dc.clear(mxgui::black);
diff --git a/_tools/winsimulator/window.cpp b/_tools/winsimulator/window.cpp
index 6de98bc066a014d56762c298bd112718c3ef7a22..3c896daf0b64153bb6df5203d0ef0fad6c8166d8 100644
--- a/_tools/winsimulator/window.cpp
+++ b/_tools/winsimulator/window.cpp
@@ -31,22 +31,22 @@ Window::Window()
 
 void Window::mouseMoveEvent(int x, int y)
 {
-    if(x<0 || x>=Display::instance().getWidth()) return;
-    if(y<0 || y>=Display::instance().getHeight()) return;
+    if(x<0 || x>=DisplayManager::instance().getDisplay().getWidth()) return;
+    if(y<0 || y>=DisplayManager::instance().getDisplay().getHeight()) return;
     addEvent(mxgui::Event(EventType::TouchMove,Point(x,y),EventDirection::DOWN));
 }
 
 void Window::mousePressEvent(int x, int y)
 {
-    if(x<0 || x>=Display::instance().getWidth()) return;
-    if(y<0 || y>=Display::instance().getHeight()) return;
+    if(x<0 || x>=DisplayManager::instance().getDisplay().getWidth()) return;
+    if(y<0 || y>=DisplayManager::instance().getDisplay().getHeight()) return;
     addEvent(mxgui::Event(EventType::TouchDown,Point(x,y),EventDirection::DOWN));
 }
 
 void Window::mouseReleaseEvent(int x, int y)
 {
-    if(x<0 || x>=Display::instance().getWidth()) return;
-    if(y<0 || y>=Display::instance().getHeight()) return;
+    if(x<0 || x>=DisplayManager::instance().getDisplay().getWidth()) return;
+    if(y<0 || y>=DisplayManager::instance().getDisplay().getHeight()) return;
     addEvent(mxgui::Event(EventType::TouchUp,Point(x,y),EventDirection::UP));
 }