diff --git a/Core/Code/Interactions/mitkMouseModeSwitcher.cpp b/Core/Code/Interactions/mitkMouseModeSwitcher.cpp
index 2a2638d5be..b8a153ba82 100644
--- a/Core/Code/Interactions/mitkMouseModeSwitcher.cpp
+++ b/Core/Code/Interactions/mitkMouseModeSwitcher.cpp
@@ -1,192 +1,204 @@
 /*=========================================================================
 
 Program:   Medical Imaging & Interaction Toolkit
 Language:  C++
 Date:      $Date: 2010-01-14 14:20:26 +0100 (Thu, 14 Jan 2010) $
 Version:   $Revision: 21047 $
 
 Copyright (c) German Cancer Research Center, Division of Medical and
 Biological Informatics. All rights reserved.
 See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
 
 This software is distributed WITHOUT ANY WARRANTY; without even
 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
 
 
 #include "mitkMouseModeSwitcher.h"
 
 #include "mitkDisplayInteractor.h"
 #include "mitkDisplayVectorInteractor.h"
 #include "mitkDisplayVectorInteractorLevelWindow.h"
 #include "mitkDisplayVectorInteractorScroll.h"
 
 
 
 mitk::MouseModeSwitcher::MouseModeSwitcher( mitk::GlobalInteraction* gi ) 
 : m_GlobalInteraction( gi )
 , m_ActiveInteractionScheme( MITK )
 , m_ActiveMouseMode( MousePointer )
 , m_LeftMouseButtonHandler( NULL )
 {
   assert(gi);
 
   this->InitializeListeners();
   this->SetInteractionScheme( m_ActiveInteractionScheme );
 }
 
 
 mitk::MouseModeSwitcher::~MouseModeSwitcher()
 {
 }
 
 
 void mitk::MouseModeSwitcher::InitializeListeners()
 {
   mitk::DisplayVectorInteractor::Pointer moveAndZoomInteractor = mitk::DisplayVectorInteractor::New(
     "moveNzoom", new mitk::DisplayInteractor() );
   mitk::StateMachine::Pointer listener = moveAndZoomInteractor.GetPointer();
   m_ListenersForMITK.push_back( listener );
 
 
   mitk::DisplayVectorInteractorScroll::Pointer scrollInteractor = mitk::DisplayVectorInteractorScroll::New( 
     "MiddleClickScroll", new mitk::DisplayInteractor() );
   listener = scrollInteractor;
   m_ListenersForPACS.push_back( listener );
 
   mitk::DisplayVectorInteractorLevelWindow::Pointer lwInteractor = mitk::DisplayVectorInteractorLevelWindow::New("RightClickLevelWindow");
   listener = lwInteractor;
   m_ListenersForPACS.push_back( listener );
 
   mitk::DisplayVectorInteractor::Pointer panInteractor = mitk::DisplayVectorInteractor::New( 
     "ShiftClickPan", new mitk::DisplayInteractor() );
   listener = panInteractor;
   m_ListenersForPACS.push_back( listener );
 
   mitk::DisplayVectorInteractor::Pointer crtlZoomInteractor = mitk::DisplayVectorInteractor::New( 
     "CtrlZoom", new mitk::DisplayInteractor() );
   listener = crtlZoomInteractor;
   m_ListenersForPACS.push_back( listener );
 
 
 }
 
 void mitk::MouseModeSwitcher::SetInteractionScheme( InteractionScheme scheme )
 {
 
   switch ( scheme )
   {
   case MITK :
     {
       ListenerList::iterator iter;
       for ( iter=m_ListenersForPACS.begin(); iter!=m_ListenersForPACS.end(); iter++ )
       {
         m_GlobalInteraction->RemoveListener( (*iter) );
       }
 
       for ( iter=m_ListenersForMITK.begin(); iter!=m_ListenersForMITK.end(); iter++ )
       {
         m_GlobalInteraction->AddListener( (*iter) );
       }
       break;
     } // case MITK
   case PACS :
     {
       ListenerList::iterator iter;
       for ( iter=m_ListenersForMITK.begin(); iter!=m_ListenersForMITK.end(); iter++ )
       {
         m_GlobalInteraction->RemoveListener( (*iter) );
       }
 
       for ( iter=m_ListenersForPACS.begin(); iter!=m_ListenersForPACS.end(); iter++ )
       {
         m_GlobalInteraction->AddListener( (*iter) );
       }
 
       this->SelectMouseMode( MousePointer );
       break;
     } // case PACS
+  case OFF:
+    {
+      ListenerList::iterator iter;
+      for ( iter=m_ListenersForMITK.begin(); iter!=m_ListenersForMITK.end(); iter++ )
+      {
+        m_GlobalInteraction->RemoveListener( (*iter) );
+      }
+      for ( iter=m_ListenersForPACS.begin(); iter!=m_ListenersForPACS.end(); iter++ )
+      {
+        m_GlobalInteraction->RemoveListener( (*iter) );
+      }
+    }
   } // switch
 
 
   m_ActiveInteractionScheme = scheme;
 }
 
 void mitk::MouseModeSwitcher::SelectMouseMode( MouseMode mode )
 {
   if ( m_ActiveInteractionScheme != PACS )
     return;
 
   switch ( mode )
   {
   case MousePointer :
     {
       m_GlobalInteraction->RemoveListener( m_LeftMouseButtonHandler );
       break;
     } // case 0
   case Scroll :
     {
       m_GlobalInteraction->RemoveListener( m_LeftMouseButtonHandler );
 
       mitk::DisplayVectorInteractorScroll::Pointer scrollInteractor = mitk::DisplayVectorInteractorScroll::New( 
         "LeftClickScroll", new mitk::DisplayInteractor() );
       m_LeftMouseButtonHandler = scrollInteractor;
 
       m_GlobalInteraction->AddListener( m_LeftMouseButtonHandler );
 
       break;
     } // case 1
   case LevelWindow :
     {
       m_GlobalInteraction->RemoveListener( m_LeftMouseButtonHandler );
 
       mitk::DisplayVectorInteractorLevelWindow::Pointer lwInteractor = mitk::DisplayVectorInteractorLevelWindow::New( 
         "LeftClickLevelWindow" );
       m_LeftMouseButtonHandler = lwInteractor;
 
       m_GlobalInteraction->AddListener( m_LeftMouseButtonHandler );
 
       break;
     } // case 2
   case Zoom :
     {
       m_GlobalInteraction->RemoveListener( m_LeftMouseButtonHandler );
 
       mitk::DisplayVectorInteractor::Pointer zoomInteractor = mitk::DisplayVectorInteractor::New( 
         "Zoom", new mitk::DisplayInteractor() );
       m_LeftMouseButtonHandler = zoomInteractor;
 
       m_GlobalInteraction->AddListener( m_LeftMouseButtonHandler );
 
       break;
     } // case 3
   case Pan :
     {
       m_GlobalInteraction->RemoveListener( m_LeftMouseButtonHandler );
 
       mitk::DisplayVectorInteractor::Pointer panInteractor = mitk::DisplayVectorInteractor::New( 
         "Pan", new mitk::DisplayInteractor() );
       m_LeftMouseButtonHandler = panInteractor;
 
       m_GlobalInteraction->AddListener( m_LeftMouseButtonHandler );
 
       break;
     } // case 4
 
   } // switch (mode)
 
   m_ActiveMouseMode = mode;
 
   this->InvokeEvent( MouseModeChangedEvent() );
 
 }
 
 
 mitk::MouseModeSwitcher::MouseMode mitk::MouseModeSwitcher::GetCurrentMouseMode() const
 {
   return m_ActiveMouseMode;
 }
 
 
diff --git a/Core/Code/Interactions/mitkMouseModeSwitcher.h b/Core/Code/Interactions/mitkMouseModeSwitcher.h
index 919b2f113a..c9ef1377a0 100644
--- a/Core/Code/Interactions/mitkMouseModeSwitcher.h
+++ b/Core/Code/Interactions/mitkMouseModeSwitcher.h
@@ -1,149 +1,150 @@
 /*=========================================================================
 
 Program:   Medical Imaging & Interaction Toolkit
 Language:  C++
 Date:      $Date: 2009-05-28 17:19:30 +0200 (Thu, 28 May 2009) $
 Version:   $Revision: 17495 $
 
 Copyright (c) German Cancer Research Center, Division of Medical and
 Biological Informatics. All rights reserved.
 See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
 
 This software is distributed WITHOUT ANY WARRANTY; without even
 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
 
 
 #ifndef MITKMouseModeSwitcher_H_HEADER_INCLUDED_C10DC4EB
 #define MITKMouseModeSwitcher_H_HEADER_INCLUDED_C10DC4EB
 
 #include "MitkExports.h"
 #include "mitkGlobalInteraction.h"
 
 #include <itkObject.h>
 
 namespace mitk {
 
 /***********************************************************************
 *
 * \brief Class that offers a convenient way to switch between different 
 * interaction schemes
 * 
 * This class offers the possibility to swtch between the two different 
 * interaction schemes that are available:
 * - MITK : The original interaction scheme 
 *   - left mouse button   : setting the cross position in the MPR view
 *   - middle mouse button : panning
 *   - right mouse button  : zooming
 * 
 * 
 * - PACS : an alternative interaction scheme that behaves more like a
 *          PACS workstation
 *   - left mouse button   : behaviour depends on current MouseMode
 *   - middle mouse button : fast scrolling 
 *   - right mouse button  : level-window
 *   - ctrl + right button : zooming
 *   - shift+ right button : panning
 *   
 *   There are 5 different MouseModes that are available in the PACS scheme.
 *   Each MouseMode defines the interaction that is performed on a left 
 *   mouse button click:
 *   - Pointer : sets the cross position for the MPR
 *   - Scroll
 *   - Level-Window
 *   - Zoom
 *   - Pan
 * 
 * When the interaction scheme or the MouseMode is changed, this class
 * manages the adding and removing of the relevant listeners offering 
 * a convenient way to modify the interaction behaviour.
 * 
 ***********************************************************************/
   class MITK_CORE_EXPORT MouseModeSwitcher : public itk::Object
   {
   public:
 
 #pragma GCC visibility push(default)
     /**
       \brief Can be observed by GUI class to update button states when mode is changed programatically.
     */
     itkEventMacro( MouseModeChangedEvent, itk::AnyEvent );
 #pragma GCC visibility pop
 
     mitkClassMacro( MouseModeSwitcher, itk::Object );
     mitkNewMacro1Param( Self, GlobalInteraction* );
 
     // enum of the different interaction schemes that are available
     enum InteractionScheme
     {
       PACS = 0,
-      MITK = 1
+      MITK = 1,
+      OFF = 2
     };
 
     // enum of available mouse modes for PACS interaction scheme
     enum MouseMode
     {
       MousePointer = 0,
       Scroll,
       LevelWindow,
       Zoom,
       Pan
     };
 
     /**
     * \brief Setter for interaction scheme
     */
     void SetInteractionScheme( InteractionScheme );
     
     /**
     * \brief Setter for mouse mode
     */
     void SelectMouseMode( MouseMode mode );
     
     /**
     * \brief Returns the current mouse mode
     */
     MouseMode GetCurrentMouseMode() const;
 
   protected:
 
     /**
     * \brief Constructor takes GlobalInteraction, MUST NOT be NULL.
     **/
     MouseModeSwitcher( GlobalInteraction* );
     
     virtual ~MouseModeSwitcher();
 
 
   private:
 
     /**
     * \brief Initializes the listeners for the different interaction schemes
     * 
     * This method creates all listeners that are required for the different 
     * interaction schemes. These are stored in two lists.
     */
     void InitializeListeners();
    
     GlobalInteraction::Pointer m_GlobalInteraction;
 
     InteractionScheme m_ActiveInteractionScheme;
     MouseMode         m_ActiveMouseMode;
 
     typedef std::vector<StateMachine::Pointer>  ListenerList;
     ListenerList m_ListenersForMITK;
     ListenerList m_ListenersForPACS;
 
     StateMachine::Pointer m_LeftMouseButtonHandler;
 
   };
 
 } // namespace mitk
 
 
 
 #endif /* MITKMouseModeSwitcher_H_HEADER_INCLUDED_C10DC4EB */