Use getargs() function.
diff --git a/Modules/flmodule.c b/Modules/flmodule.c
index 9237371..1fd9a2c 100644
--- a/Modules/flmodule.c
+++ b/Modules/flmodule.c
@@ -394,7 +394,7 @@
 {
 	float parameter;
 
-	if (!getfloatarg (args, &parameter)) return NULL;
+	if (!getargs(args, "f", &parameter)) return NULL;
 
 	(*func) (obj, parameter);
 
@@ -411,7 +411,7 @@
 {
 	float par1, par2;
 
-	if (!getfloatfloatarg (args, &par1, &par2)) return NULL;
+	if (!getargs(args, "(ff)", &par1, &par2)) return NULL;
 
 	(*func) (obj, par1, par2);
 
@@ -428,7 +428,7 @@
 {
 	int parameter;
 
-	if (!getintarg (args, &parameter)) return NULL;
+	if (!getintarg(args, &parameter)) return NULL;
 
 	(*func) (obj, parameter);
 
@@ -443,11 +443,11 @@
 	FL_OBJECT *obj;
 	object *args;
 {
-	object *a;
+	char *a;
 
-	if (!getstrarg (args, &a)) return NULL;
+	if (!getstrarg(args, &a)) return NULL;
 
-	(*func) (obj, getstringvalue(a)[0]);
+	(*func) (obj, a[0]);
 
 	INCREF(None);
 	return None;
@@ -460,11 +460,11 @@
 	FL_OBJECT *obj;
 	object *args;
 {  
-	object *a;
+	char *a;
      
-	if (!getstrarg (args, &a)) return NULL;
+	if (!getstrarg(args, &a)) return NULL;
 
-	(*func) (obj, getstringvalue (a));
+	(*func) (obj, a);
 
 	INCREF(None);
 	return None;
@@ -478,12 +478,12 @@
 	FL_OBJECT *obj;
 	object *args;
 {
-	object *a;
-	int b;
+	char *b;
+	int a;
 	
-	if (!getintstrarg (args, &b, &a)) return NULL;
+	if (!getintstrarg(args, &a, &b)) return NULL;
 	
-	(*func) (obj, b, getstringvalue (a));
+	(*func) (obj, a, b);
 	
 	INCREF(None);
 	return None;
@@ -499,7 +499,7 @@
 {
 	int par1, par2;
 	
-	if (!getintintarg (args, &par1, &par2)) return NULL;
+	if (!getintintarg(args, &par1, &par2)) return NULL;
 	
 	(*func) (obj, par1, par2);
 	
@@ -533,7 +533,7 @@
 {  
 	char *str;
 	
-	if (!getnoarg (args)) return NULL;
+	if (!getnoarg(args)) return NULL;
 	
 	str = (*func) (obj);
 	
@@ -1034,7 +1034,7 @@
 {
 	float f1, f2, f3;
 
-	if (!getfloatfloatfloatarg(args, &f1, &f2, &f3))
+	if (!getargs(args, "(fff)", &f1, &f2, &f3))
 		return NULL;
 	fl_set_dial (g->ob_generic, f1, f2, f3);
 	INCREF(None);
@@ -1192,7 +1192,7 @@
 {
 	float f1, f2, f3;
 
-	if (!getfloatfloatfloatarg(args, &f1, &f2, &f3))
+	if (!args(args, "(fff)", &f1, &f2, &f3))
 		return NULL;
 	fl_set_slider (g->ob_generic, f1, f2, f3);
 	INCREF(None);
@@ -1402,10 +1402,10 @@
 	object *args;
 {
 	int place, border;
-	object *name;
-	if (!getintintstrarg(args, &place, &border, &name))
+	char *name;
+	if (!getargs(args, "(iis)", &place, &border, &name))
 		return NULL;
-	fl_show_form(f->ob_form, place, border, getstringvalue(name));
+	fl_show_form(f->ob_form, place, border, name);
 	INCREF(None);
 	return None;
 }
@@ -1489,15 +1489,15 @@
 {
 	int type;
 	float x, y, w, h;
-	object *name;
+	char *name;
 	FL_OBJECT *obj;
 
-	if (!getintfloatfloatfloatfloatstrarg(args,&type,&x,&y,&w,&h,&name))
+	if (!getargs(args,"(iffffs)", &type,&x,&y,&w,&h,&name))
 		return NULL;
   
 	fl_addto_form (f-> ob_form);
   
-	obj = (*func) (type, x, y, w, h, getstringvalue(name));
+	obj = (*func) (type, x, y, w, h, name);
 
 	fl_end_form();
 
@@ -1671,10 +1671,10 @@
 	object *args;
 {
 	int place, border;
-	object *name;
-	if (!getintintstrarg(args, &place, &border, &name))
+	char *name;
+	if (!getargs(args, "(iis)", &place, &border, &name))
 		return NULL;
-	fl_show_form(f->ob_form, place, border, getstringvalue(name));
+	fl_show_form(f->ob_form, place, border, name);
 	INCREF(None);
 	return None;
 }
@@ -1747,7 +1747,7 @@
 	FL_OBJECT *generic;
 	genericobject *g;
 	
-	if (!getintfloatfloatarg(args, &type, &mx, &my)) return NULL;
+	if (!getargs(args, "(iff)", &type, &mx, &my)) return NULL;
 
 	generic = (*func) (f-> ob_form, type, mx, my);
 
@@ -1921,7 +1921,7 @@
 	int type;
 	float w, h;
 	FL_FORM *form;
-	if (!getintfloatfloatarg(args, &type, &w, &h))
+	if (!getargs(args, "(iff)", &type, &w, &h))
 		return NULL;
 	form = fl_bgn_form(type, w, h);
 	if (form == NULL) {
@@ -2184,7 +2184,7 @@
 {
 	int arg0, arg1, arg2, arg3;
 
-	if (!getintintintintarg(args, &arg0, &arg1, &arg2, &arg3))
+	if (!getargs(args, "(iiii)", &arg0, &arg1, &arg2, &arg3))
 	      return NULL;
 
 	fl_mapcolor(arg0, (short) arg1, (short) arg2, (short) arg3);
@@ -2263,12 +2263,11 @@
      object *f;
      object *args;
 {
-	object *a, *b, *c;
+	char *a, *b, *c;
 
-        if (!getstrstrstrarg(args, &a, &b, &c)) return NULL;
+        if (!getargs(args, "(sss)", &a, &b, &c)) return NULL;
 
-	fl_show_message(
-		   getstringvalue(a), getstringvalue(b), getstringvalue(c));
+	fl_show_message(a, b, c);
 
 	INCREF(None);
 	return None;
@@ -2279,13 +2278,12 @@
      object *f;
      object *args;
 {
-        int ret;
-	object *a, *b, *c;
+	int ret;
+	char *a, *b, *c;
 
-        if (!getstrstrstrarg(args, &a, &b, &c)) return NULL;
+        if (!getargs(args, "(sss)", &a, &b, &c)) return NULL;
 
-	ret = fl_show_question(
-		   getstringvalue(a), getstringvalue(b), getstringvalue(c));
+	ret = fl_show_question(a, b, c);
    
         return newintobject((long) ret);
 }
@@ -2296,11 +2294,11 @@
      object *args;
 {
         char *str;
-	object *a, *b;
+	char *a, *b;
 
         if (!getstrstrarg(args, &a, &b)) return NULL;
 
-	str = fl_show_input(getstringvalue(a), getstringvalue(b));
+	str = fl_show_input(a, b);
 
 	if (str == NULL) {
 		INCREF(None);
@@ -2315,12 +2313,11 @@
      object *args;
 {
         char *str;
-	object *a, *b, *c, *d;
+	char *a, *b, *c, *d;
 
-        if (!getstrstrstrstrarg(args, &a, &b, &c, &d)) return NULL;
+        if (!getargs(args, "(ssss)", &a, &b, &c, &d)) return NULL;
 
-	str = fl_show_file_selector(getstringvalue(a), getstringvalue(b),
-				     getstringvalue(c), getstringvalue(d));
+	str = fl_show_file_selector(a, b, c, d);
    
 	if (str == NULL) {
 		INCREF(None);
@@ -2420,143 +2417,3 @@
 	fl_init();
 #endif /* !FL_V15 */
 }
-
-
-/* Support routines */
-
-int
-getintintstrarg(args, a, b, c)
-	object *args;
-	int *a, *b;
-	object **c;
-{
-	if (args == NULL || !is_tupleobject(args) || gettuplesize(args) != 3) {
-		err_badarg();
-		return NULL;
-	}
-	return getintarg(gettupleitem(args, 0), a) &&
-		getintarg(gettupleitem(args, 1), b) &&
-		getstrarg(gettupleitem(args, 2), c);
-}
-
-int
-getintfloatfloatarg(args, a, b, c)
-	object *args;
-	int *a;
-	float *b, *c;
-{
-	if (args == NULL || !is_tupleobject(args) || gettuplesize(args) != 3) {
-		err_badarg();
-		return NULL;
-	}
-	return getintarg(gettupleitem(args, 0), a) &&
-		getfloatarg(gettupleitem(args, 1), b) &&
-		getfloatarg(gettupleitem(args, 2), c);
-}
-
-int
-getintintintintarg(args, a, b, c, d)
-	object *args;
-	int *a, *b, *c, *d;
-{
-	if (args == NULL || !is_tupleobject(args) || gettuplesize(args) != 4) {
-		err_badarg();
-		return NULL;
-	}
-	return getintarg(gettupleitem(args, 0), a) &&
-		getintarg(gettupleitem(args, 1), b) &&
-		getintarg(gettupleitem(args, 2), c) &&
-		getintarg(gettupleitem(args, 3), d);
-}
-
-int
-getfloatarg(args, a)
-	object *args;
-	float *a;
-{
-	double x;
-	if (!getdoublearg(args, &x))
-		return 0;
-	*a = x;
-	return 1;
-}
-
-int
-getintfloatfloatfloatfloatstrarg(args, type, x, y, w, h, name)
-     object *args;
-     int *type;
-     float *x, *y, *w, *h;
-     object **name;
-{
-	if (args == NULL || !is_tupleobject(args) || gettuplesize(args) != 6) {
-		err_badarg();
-		return NULL;
-	}
-	return  getintarg(gettupleitem(args, 0), type) &&
-		getfloatarg(gettupleitem(args, 1), x) &&
-		getfloatarg(gettupleitem(args, 2), y) &&
-		getfloatarg(gettupleitem(args, 3), w) &&
-		getfloatarg(gettupleitem(args, 4), h) &&
-		getstrarg(gettupleitem(args, 5), name);
-}
-
-int
-getfloatfloatfloatarg(args, f1, f2, f3)
-     object *args;
-     float *f1, *f2, *f3;
-{
-        if (args == NULL || !is_tupleobject(args) || gettuplesize(args) != 3) {
-		err_badarg();
-		return NULL;
-	}
-	return  getfloatarg(gettupleitem(args, 0), f1) &&
-		getfloatarg(gettupleitem(args, 1), f2) &&
-		getfloatarg(gettupleitem(args, 2), f3);
-}
-
-int
-getfloatfloatarg(args, f1, f2)
-     object *args;
-     float *f1, *f2;
-{
-        if (args == NULL || !is_tupleobject(args) || gettuplesize(args) != 2) {
-		err_badarg();
-		return NULL;
-	}
-	return  getfloatarg(gettupleitem(args, 0), f1) &&
-		getfloatarg(gettupleitem(args, 1), f2);
-}
-
-int
-getstrstrstrarg(v, a, b, c)
-	object *v;
-	object **a;
-	object **b;
-        object **c;
-{
-	if (v == NULL || !is_tupleobject(v) || gettuplesize(v) != 3) {
-		return err_badarg();
-	}
-	return getstrarg(gettupleitem(v, 0), a) &&
-		getstrarg(gettupleitem(v, 1), b)&&
-		getstrarg(gettupleitem(v, 2), c);
-}
-
-
-int
-getstrstrstrstrarg(v, a, b, c, d)
-	object *v;
-	object **a;
-	object **b;
-        object **c;
-        object **d;
-{
-	if (v == NULL || !is_tupleobject(v) || gettuplesize(v) != 4) {
-		return err_badarg();
-	}
-	return getstrarg(gettupleitem(v, 0), a) &&
-		getstrarg(gettupleitem(v, 1), b)&&
-		getstrarg(gettupleitem(v, 2), c) &&
-		getstrarg(gettupleitem(v, 3),d);
-		  
-}