diff --git a/IPython/html/notebookapp.py b/IPython/html/notebookapp.py
index 561edb5..50e10bf 100644
--- a/IPython/html/notebookapp.py
+++ b/IPython/html/notebookapp.py
@@ -745,8 +745,5 @@ class NotebookApp(BaseIPythonApplication):
 # Main entry point
 #-----------------------------------------------------------------------------
 
-def launch_new_instance():
-    app = NotebookApp.instance()
-    app.initialize()
-    app.start()
+launch_new_instance = NotebookApp.launch_new_instance
 
diff --git a/IPython/nbconvert/nbconvertapp.py b/IPython/nbconvert/nbconvertapp.py
index 027f505..46008b4 100755
--- a/IPython/nbconvert/nbconvertapp.py
+++ b/IPython/nbconvert/nbconvertapp.py
@@ -203,10 +203,5 @@ class NbConvertApp(Application):
 # Main entry point
 #-----------------------------------------------------------------------------
 
-def launch_new_instance():
-    """Application entry point"""
-
-    app = NbConvertApp.instance()
-    app.description = __doc__
-    app.start(argv=sys.argv)
+launch_new_instance = NbConvertApp.launch_new_instance
 
diff --git a/IPython/parallel/apps/ipclusterapp.py b/IPython/parallel/apps/ipclusterapp.py
index 65dc1bf..755fac3 100755
--- a/IPython/parallel/apps/ipclusterapp.py
+++ b/IPython/parallel/apps/ipclusterapp.py
@@ -608,12 +608,7 @@ class IPClusterApp(BaseIPythonApplication):
         else:
             return self.subapp.start()
 
-def launch_new_instance():
-    """Create and run the IPython cluster."""
-    app = IPClusterApp.instance()
-    app.initialize()
-    app.start()
-
+launch_new_instance = IPClusterApp.launch_new_instance
 
 if __name__ == '__main__':
     launch_new_instance()
diff --git a/IPython/parallel/apps/ipcontrollerapp.py b/IPython/parallel/apps/ipcontrollerapp.py
index 68315b6..b820569 100755
--- a/IPython/parallel/apps/ipcontrollerapp.py
+++ b/IPython/parallel/apps/ipcontrollerapp.py
@@ -528,8 +528,7 @@ class IPControllerApp(BaseParallelApplication):
             self.cleanup_connection_files()
             
 
-
-def launch_new_instance():
+def launch_new_instance(*args, **kwargs):
     """Create and run the IPython controller"""
     if sys.platform == 'win32':
         # make sure we don't get called from a multiprocessing subprocess
@@ -545,9 +544,7 @@ def launch_new_instance():
         if p.name != 'MainProcess':
             # we are a subprocess, don't start another Controller!
             return
-    app = IPControllerApp.instance()
-    app.initialize()
-    app.start()
+    return IPControllerApp.launch_new_instance(*args, **kwargs)
 
 
 if __name__ == '__main__':
diff --git a/IPython/parallel/apps/ipengineapp.py b/IPython/parallel/apps/ipengineapp.py
index 50dad14..b937649 100755
--- a/IPython/parallel/apps/ipengineapp.py
+++ b/IPython/parallel/apps/ipengineapp.py
@@ -388,11 +388,7 @@ class IPEngineApp(BaseParallelApplication):
             self.log.critical("Engine Interrupted, shutting down...\n")
 
 
-def launch_new_instance():
-    """Create and run the IPython engine"""
-    app = IPEngineApp.instance()
-    app.initialize()
-    app.start()
+launch_new_instance = IPEngineApp.launch_new_instance
 
 
 if __name__ == '__main__':
diff --git a/IPython/parallel/apps/iploggerapp.py b/IPython/parallel/apps/iploggerapp.py
index 3820af2..be1ab61 100755
--- a/IPython/parallel/apps/iploggerapp.py
+++ b/IPython/parallel/apps/iploggerapp.py
@@ -91,11 +91,7 @@ class IPLoggerApp(BaseParallelApplication):
             self.log.critical("Logging Interrupted, shutting down...\n")
 
 
-def launch_new_instance():
-    """Create and run the IPython LogWatcher"""
-    app = IPLoggerApp.instance()
-    app.initialize()
-    app.start()
+launch_new_instance = IPLoggerApp.launch_new_instance
 
 
 if __name__ == '__main__':
diff --git a/IPython/terminal/console/app.py b/IPython/terminal/console/app.py
index 9023a4f..3ad504e 100644
--- a/IPython/terminal/console/app.py
+++ b/IPython/terminal/console/app.py
@@ -140,11 +140,8 @@ class ZMQTerminalIPythonApp(TerminalIPythonApp, IPythonConsoleApp):
         # no-op in the frontend, code gets run in the backend
         pass
 
-def launch_new_instance():
-    """Create and run a full blown IPython instance"""
-    app = ZMQTerminalIPythonApp.instance()
-    app.initialize()
-    app.start()
+
+launch_new_instance = ZMQTerminalIPythonApp.launch_new_instance
 
 
 if __name__ == '__main__':
diff --git a/IPython/terminal/ipapp.py b/IPython/terminal/ipapp.py
index 642713e..3bea16f 100755
--- a/IPython/terminal/ipapp.py
+++ b/IPython/terminal/ipapp.py
@@ -389,11 +389,7 @@ def load_default_config(ipython_dir=None):
     return config
 
 
-def launch_new_instance():
-    """Create and run a full blown IPython instance"""
-    app = TerminalIPythonApp.instance()
-    app.initialize()
-    app.start()
+launch_new_instance = TerminalIPythonApp.launch_new_instance
 
 
 if __name__ == '__main__':