Listing 7: A derived PuppetProcessMessage routine
pascal ComponentResult PTBlockyPuppetProcessMessage(PTBLPrivateGlobals** storage,
							                UInt32 atMediaTime,
							                QTAtomContainer aMessage)
{
	ComponentResult	anError = noErr;
	OSType		    messageCode;
	
	::PTGetMessageCode(aMessage, &messageCode);
	switch (messageCode)
	{
		case kPTNoteEvent:
		{
			anError = ProcessNoteMessage(storage, aMessage);
			break;
		}
		
		default:
			anError = PuppetProcessMessage((**storage).delegate,
									atMediaTime,
									aMessage);
			break;
	}
		
	return anError;
}