Waste 1.3 extra's modified for waste 2.0 (and missing from MW's distribution of 2.0).
diff --git a/Mac/Wastemods/WEObjectHandlers.c b/Mac/Wastemods/WEObjectHandlers.c
new file mode 100644
index 0000000..f1dd5af
--- /dev/null
+++ b/Mac/Wastemods/WEObjectHandlers.c
@@ -0,0 +1,111 @@
+/*
+	WASTE Demo Project:
+	Sample WASTE Object Handlers
+
+	Copyright © 1993-1998 Marco Piovanelli
+	All Rights Reserved
+*/
+
+#include "WEObjectHandlers.h"
+
+#ifndef __ICONS__
+#include <Icons.h>
+#endif
+
+#ifndef __SOUND__
+#include <Sound.h>
+#endif
+
+/* PICTURES */
+
+pascal OSErr HandleNewPicture(Point *defaultObjectSize, WEObjectReference objectRef)
+{
+	PicHandle thePicture;
+	Rect frame;
+
+	/* get handle to object data (in this case, a picture handle) */
+	thePicture = (PicHandle) WEGetObjectDataHandle(objectRef);
+
+	/* figure out the default object size by looking at the picFrame record */
+	frame = (*thePicture)->picFrame;
+	OffsetRect(&frame, -frame.left, -frame.top);
+	defaultObjectSize->v = frame.bottom;
+	defaultObjectSize->h = frame.right;
+
+	return noErr;
+}
+
+pascal OSErr HandleDisposePicture(WEObjectReference objectRef)
+{
+	PicHandle thePicture;
+
+	/* get handle to object data (in this case, a picture handle) */
+	thePicture = (PicHandle) WEGetObjectDataHandle(objectRef);
+
+	/* kill the picture */
+	KillPicture(thePicture);
+
+	return MemError();
+}
+
+pascal OSErr HandleDrawPicture(const Rect *destRect, WEObjectReference objectRef)
+{
+	PicHandle thePicture;
+
+	/* get handle to object data (in this case, a picture handle) */
+	thePicture = (PicHandle) WEGetObjectDataHandle(objectRef);
+
+	/* draw the picture */
+	DrawPicture(thePicture, destRect);
+
+	return noErr;
+}
+
+
+/* SOUND */
+
+pascal OSErr HandleNewSound(Point *defaultObjectSize, WEObjectReference objectRef)
+{
+#pragma unused(objectRef)
+
+	/* sounds are drawn as standard 32x32 icons */
+	defaultObjectSize->v = 32;
+	defaultObjectSize->h = 32;
+
+	return noErr;
+}
+
+pascal OSErr HandleDrawSound(const Rect *destRect, WEObjectReference objectRef)
+{
+#pragma unused(objectRef)
+
+	/* draw the sound icon */
+	return PlotIconID(destRect, kAlignNone, kTransformNone, kSoundIconID);
+}
+
+pascal Boolean HandleClickSound(Point hitPt, EventModifiers modifiers,
+					UInt32 clickTime, WEObjectReference objectRef)
+{
+#pragma unused(hitPt, clickTime)
+
+	SndListHandle theSound;
+
+	/* WASTE sets the low bit of modifiers on double (multiple) clicks */
+	if (modifiers & 0x0001)
+	{
+
+		/* get a handle to the object data (in this case, a sound handle) */
+		theSound = (SndListHandle) WEGetObjectDataHandle(objectRef);
+
+		/* play the sound */
+		SndPlay(nil, theSound, false);
+
+		/* return TRUE so WASTE knows we handled the click */
+		return true;
+	}
+	else
+	{
+		/* not a double click: let WASTE handle the mouse-down */
+		return false;
+	}
+}