diff --git a/src/callback.c b/src/callback.c
index 2cd1ef7888f6970abead994c67f98e97d1daf5ab..a760a8a843ac23d835fa7c6419f2285f10eaf461 100644
--- a/src/callback.c
+++ b/src/callback.c
@@ -31,12 +31,12 @@ static struct callback *get_free_callback()
   {
     int e;
     struct callback_block *tmp2;
-    tmp1=ALLOC_STRUCT(callback_block);
+    tmp2=ALLOC_STRUCT(callback_block);
 
     for(e=0;e<sizeof(CALLBACK_CHUNK);e++)
     {
-      tmp1->callbacks[e].next=tmp;
-      tmp=tmp1->callbacks+e;
+      tmp2->callbacks[e].next=tmp;
+      tmp=tmp2->callbacks+e;
     }
   }
   free_callbacks=tmp->next;
@@ -63,9 +63,9 @@ void call_callback(struct callback **ptr)
 }
 
 struct callback *add_to_callback(struct callback **ptr,
-					   callback call,
-					   void *arg,
-					   callback free_func)
+				 callback_func call,
+				 void *arg,
+				 callback_func free_func)
 {
   struct callback *l;
   l=get_free_callback();
@@ -91,8 +91,8 @@ void free_callback(struct callback **ptr)
   struct callback *l;
   while(l=*ptr)
   {
-    if(l->call.arg && l->call.free_func)
-      l->call.free_func(l, l->call.arg);
+    if(l->arg && l->free_func)
+      l->free_func(l, l->arg);
     *ptr=l->next;
     l->next=free_callbacks;
     free_callbacks=l;
diff --git a/src/callback.h b/src/callback.h
index 46c4e152a704d6e99b95204c5cccfb3a2ddc5605..6ba2257f7081b7ddfacd91f76b504203e4941def 100644
--- a/src/callback.h
+++ b/src/callback.h
@@ -8,16 +8,20 @@
 
 #include "array.h"
 
+struct callback;
+
+typedef void (*callback_func)(struct callback *, void *);
+
 /* Prototypes begin here */
-struct callback_list;
+struct callback;
 struct callback_block;
-void call_callback_list(struct callback_list **ptr);
-struct callback_list *add_to_callback_list(struct callback_list **ptr,
-					   callback call,
-					   void *arg);
-void *remove_callback(struct callback_list *l);
-void free_callback_list(struct callback_list **ptr);
-void call_and_free_callback_list(struct callback_list **ptr);
+void call_callback(struct callback **ptr);
+struct callback *add_to_callback(struct callback **ptr,
+				 callback_func call,
+				 void *arg,
+				 callback_func free_func);
+void *remove_callback(struct callback *l);
+void free_callback(struct callback **ptr);
 /* Prototypes end here */
 
 #endif