diff --git a/modules/gui/pymod/CMakeLists.txt b/modules/gui/pymod/CMakeLists.txt
index 00a08e2578ab167f29bae1372f2b942e73e88993..4a530facf4d810f4863fba48776efa34d116265d 100644
--- a/modules/gui/pymod/CMakeLists.txt
+++ b/modules/gui/pymod/CMakeLists.txt
@@ -84,6 +84,7 @@ set(OST_GUI_PYMOD_MODULES
   init_spacenav.py
   init_splash.py
   traj.py
+  helpwidget.py
 )
 
 set(OST_GUI_PYMOD_DNG_MODULES
diff --git a/modules/gui/pymod/helpwidget.py b/modules/gui/pymod/helpwidget.py
new file mode 100644
index 0000000000000000000000000000000000000000..117230ece30d2a1d1ec1488d9c66020b24ff100d
--- /dev/null
+++ b/modules/gui/pymod/helpwidget.py
@@ -0,0 +1,42 @@
+from PyQt4.QtGui import *
+from PyQt4.QtCore import *
+from ost import gui
+class DocWidget(QWidget):
+  def __init__(self, parent=None):
+    QWidget.__init__(self, parent)
+    l=QVBoxLayout(self)
+    l.setMargin(0)
+    self.setWindowTitle('OpenStructure Help')
+    self.searchbox=QLineEdit(self)
+    l.addWidget(self.searchbox)
+    self.doctext=QTextEdit('', self)
+    l.addWidget(self.doctext)
+    self.setLayout(l)
+    QObject.connect(self.searchbox, SIGNAL('returnPressed()'),
+                    self.OnReturnPressed)
+  def OnReturnPressed(self):
+    help(str(self.searchbox.text()))
+doc_widget=DocWidget()
+doc_widget_for_panel=gui.Widget(doc_widget)
+panels=gui.GostyApp.Instance().perspective.panels
+panels.AddWidgetToPool("Doc",doc_widget_for_panel)
+
+
+class Help:
+  def __call__(self, what=None):
+    import pydoc
+    d=pydoc.HTMLDoc()
+    if what==None:
+      doc_widget.doctext.setHtml('')
+      doc_widget.show()
+      doc_widget.searchbox.setText('')
+      return
+    s=d.document(pydoc.resolve(what)[0])
+    doc_widget.doctext.setHtml(s)
+    doc_widget.searchbox.setText('')
+    if not doc_widget.isVisible():
+      panels.AddWidget(gui.PanelPosition.RIGHT_PANEL, doc_widget_for_panel, False)
+  def __repr__(self):
+    return 'Type help() for interactive help, or help(object) for help about object.'
+
+help=Help()
diff --git a/modules/gui/src/gl_win.cc b/modules/gui/src/gl_win.cc
index 6e2fbdf2fd40eb933144403cb1e6b195cda10f55..25b1b9f1b4ad94bb05d02c1d76c3e9e6d9fcf433 100644
--- a/modules/gui/src/gl_win.cc
+++ b/modules/gui/src/gl_win.cc
@@ -115,10 +115,6 @@ gl_canvas_(NULL)
 #if OST_IMG_ENABLED
   ToolManager::Instance().AddTool(new MapTool);
 #endif
-  QBoxLayout* l=new QVBoxLayout(this);
-  l->setMargin(0);
-  l->setSpacing(0);
-  l->addWidget(main);
 }
 
 void GLWin::ActiveToolChanged(Tool* t)
diff --git a/modules/gui/src/widget.cc b/modules/gui/src/widget.cc
index b67f4b50fa97fef66985c237115a39a3c061a5f3..7a94cc0dd7cb595175f4100c3baa7194d9468126 100644
--- a/modules/gui/src/widget.cc
+++ b/modules/gui/src/widget.cc
@@ -17,6 +17,7 @@
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 //------------------------------------------------------------------------------
 #include <cassert>
+#include <QVBoxLayout>
 
 #include "widget.hh"
 
@@ -52,6 +53,10 @@ void Widget::SetInternalWidget(QWidget* widget)
 {
   assert(internal_==NULL);
   internal_=widget;
+  QBoxLayout* l=new QVBoxLayout(this);
+  l->setMargin(0);
+  l->setSpacing(0);
+  l->addWidget(widget);
   widget->setParent(this);
 }
 
diff --git a/scripts/init.py b/scripts/init.py
index 4ca4cb7a0a0e5fdc16735b22274b632fffc92be3..11c4507fb466f7c23cb98e03feb1d95070bbf6d0 100644
--- a/scripts/init.py
+++ b/scripts/init.py
@@ -3,6 +3,7 @@ import sys
 import os.path
 import optparse
 from ost import io, mol, seq, geom, conop, gui, settings
+
 import ost
 try: 
   from ost import img
@@ -20,6 +21,7 @@ from ost.gui.init_spacenav import _InitSpaceNav
 from ost.gui.init_context_menu import _InitContextMenu
 from ost.gui.init_splash import _InitSplash
 from ost.gui.dng import termuse
+from ost.gui.helpwidget import help
 
 from PyQt4.QtGui import *
 def _my_exit(code):