Sorry, forgot all about this during the holidays. Basically I'd remove the static methods from the subclasses and use this code in JApplicationBase (untested):

```php

if (empty(self::$instance))
{
	if (class_exists($name) && (is_subclass_of($name, 'JApplicationCli')))
	{
		self::$instance = new $name;
	}
	else
	{
		self::$instance = new JApplicationCli;
	}
}

```