--- pear-core/PEAR/Frontend.php	2007-03-27 16:57:20.000000000 +0200
+++ ../pear/cvs/PEAR/PEAR/Frontend.php	2007-04-08 23:23:31.000000000 +0200
@@ -34,10 +34,8 @@
 
 /**
  * Singleton-based frontend for PEAR user input/output
  *
- * Note that frontend classes must implement userConfirm(), and shoul implement
- * displayFatalError() and outputData()
  * @category   pear
  * @package    PEAR
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
@@ -89,11 +87,9 @@
             }
         }
         if (class_exists($uiclass)) {
             $obj = &new $uiclass;
-            // quick test to see if this class implements a few of the most
-            // important frontend methods
-            if (method_exists($obj, 'userConfirm')) {
+            if (is_object($obj) && is_a($obj, 'PEAR_Frontend')) {
                 $GLOBALS['_PEAR_FRONTEND_SINGLETON'] = &$obj;
                 $GLOBALS['_PEAR_FRONTEND_CLASS'] = $uiclass;
                 return $obj;
             } else {
@@ -105,9 +101,9 @@
         return $err;
     }
 
     /**
-     * Set the frontend class that will be used by calls to {@link singleton()}
+     * Set the frontend object that will be used by calls to {@link singleton()}
      *
      * Frontends are expected to be a descendant of PEAR_Frontend
      * @param PEAR_Frontend
      * @return PEAR_Frontend
@@ -123,19 +119,8 @@
             $err = PEAR::raiseError('not a valid frontend class: (' .
                 get_class($uiobject) . ')');
             return $err;
         }
-        // quick test to see if this class implements a few of the most
-        // important frontend methods
-        if (method_exists($uiobject, 'userConfirm')) {
-            $GLOBALS['_PEAR_FRONTEND_SINGLETON'] = &$uiobject;
-            $GLOBALS['_PEAR_FRONTEND_CLASS'] = get_class($uiobject);
-            return $uiobject;
-        } else {
-            $err = PEAR::raiseError("not a value frontend class: (" . get_class($uiobject)
-                . ')');
-            return $err;
-        }
     }
 
     /**
      * @param string $path relative or absolute include path
