User input is useless.  We must redesign it.  If lots of skipping is
occuring, then quick pressing of buttons has no effect.  We must make
it call-back based, so that, e.g.

class Button_Callback
{
public:
	bool
	get_button() const
	{ return button; }

private:
	friend class User_Input_Manager;

	void
	reset_button()
	{
		button = false;
	}

	bool button;
};

class User_Input_Manager
{
	// ...

	/// Should be run in a different thread from most
	/// intense part of system, so that its nice and responsive.

	void
	process_events()
	{
		on button down, set variable to DOWN, but DON'T set
		variable to up if button up!
		This doesn't affect axes, of course (I think)
	}

	/// That's right! has a tock func
	void
	tock(t)
	{
		// I HOPE all implementations have fixed the missing
		// non-const mem_fun_t discrepency.
		for_each(button_callbacks.begin(), button_callbacks.end(),
			 std::mem_fun(&Button_Callback::reset_button));
		process_events();
	}

	// ...
};


----------------------

Screen initialiser for OpenGL needs some sort of way to allow user to
supply several acceptable parameters in an 'order of preference', ie
if Depth can't be 32, use 16, if can't use alpha, get no alpha screen,
etc.  The 'exception thrown on successful screen find' was good, but
perhaps some method of generically supplying a list in preferencial
order would be createable as a generic model?

----------------------

Generic 'Pimpl' model

----------------------

Singleton classes creatable with a custom new/delete operator pair?

----------------------

Split apart data from logic COMPLETELY.  I think this has already been
mentioned.

----------------------

Create a State Machine model (see paper.)

----------------------

Create a brand new, improved, Tock model.  Write a 'design pattern'
for it, and publish it (woohoo! first work!)

----------------------



