diff --git a/Modules/flmodule.c b/Modules/flmodule.c
index 21066b0..143a1ee 100644
--- a/Modules/flmodule.c
+++ b/Modules/flmodule.c
@@ -231,6 +231,7 @@
 
 static struct methodlist generic_methods[] = {
 	{"set_call_back",	generic_set_call_back},
+	{"delete_object",	generic_delete_object},
 	{"show_object",		generic_show_object},
 	{"hide_object",		generic_hide_object},
 	{"redraw_object",	generic_redraw_object},
@@ -1733,15 +1734,47 @@
 	DEL(f);
 }
 
+static struct memberlist form_memberlist[] = {
+	{"window",	T_LONG,		OFF(window),	RO},
+	{"w",		T_FLOAT,	OFF(w)},
+	{"h",		T_FLOAT,	OFF(h)},
+	{"x",		T_FLOAT,	OFF(x)},
+	{"y",		T_FLOAT,	OFF(y)},
+	{"deactivated",	T_INT,		OFF(deactivated)},
+	{"visible",	T_INT,		OFF(visible)},
+	{"frozen",	T_INT,		OFF(frozen)},
+	{"doublebuf",	T_INT,		OFF(doublebuf)},
+	{NULL}	/* Sentinel */
+};
+
 static object *
 form_getattr(f, name)
 	formobject *f;
 	char *name;
 {
-	if (strcmp(name, "window") == 0)
-		return newintobject(f->ob_form->window);
-	/* XXX check for data attr's: x, y etc. */
-	return findmethod(form_methods, (object *)f, name);
+	object *meth;
+
+	meth = findmethod(form_methods, (object *)f, name);
+	if (meth != NULL)
+		return meth;
+	err_clear();
+	return getmember((char *)f->ob_form, form_memberlist, name);
+}
+
+static int
+form_setattr(f, name, v)
+	formobject *f;
+	char *name;
+	object *v;
+{
+	int ret;
+
+	if (v == NULL) {
+		err_setstr(TypeError, "can't delete form attributes");
+		return NULL;
+	}
+
+	return setmember((char *)f->ob_form, form_memberlist, name, v);
 }
 
 typeobject Formtype = {
@@ -1754,7 +1787,7 @@
 	form_dealloc,		/*tp_dealloc*/
 	0,			/*tp_print*/
 	form_getattr,		/*tp_getattr*/
-	0,			/*tp_setattr*/
+	form_setattr,		/*tp_setattr*/
 	0,			/*tp_compare*/
 	0,			/*tp_repr*/
 };
