{
   int dict_index = var_get_dict_index (v);
   const int case_index = var_get_case_index (v);
-  const int width = var_get_width (v);
 
   assert (dict_contains_var (d, v));
 
 
   /* Free memory. */
   var_clear_vardict (v);
-  var_destroy (v);
 
   if ( d->changed ) d->changed (d, d->changed_data);
 
   invalidate_proto (d);
   if (d->callbacks &&  d->callbacks->var_deleted )
-    d->callbacks->var_deleted (d, dict_index, case_index, width, d->cb_data);
+    d->callbacks->var_deleted (d, v, dict_index, case_index, d->cb_data);
+
+  var_destroy (v);
 }
 
 /* Deletes the COUNT variables listed in VARS from D.  This is
 
 struct dict_callbacks
  {
   void (*var_added) (struct dictionary *, int, void *);
-  void (*var_deleted) (struct dictionary *, int, int, int, void *);
+  void (*var_deleted) (struct dictionary *, const struct variable *,
+                       int dict_index, int case_index, void *);
   void (*var_changed) (struct dictionary *, int, void *);
   void (*var_resized) (struct dictionary *, int, int, void *);
   void (*weight_changed) (struct dictionary *, int, void *);
 
 VOID:BOXED,BOXED
 VOID:INT,INT
 VOID:INT,LONG
-VOID:INT,INT,INT
 VOID:INT,INT,INT,INT
 VOID:INT,POINTER
 VOID:OBJECT,OBJECT
+VOID:POINTER,INT,INT
 
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
 
 static void
-delete_variable_callback (PsppireDict *dict, gint posn,
-                         gint x UNUSED, gint y UNUSED, gpointer data)
+delete_variable_callback (PsppireDict *dict,
+                          const struct variable *var UNUSED,
+                          gint dict_idx, gint case_idx UNUSED, gpointer data)
 {
   PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
 
   PsppireAxis *var_vaxis;
   g_object_get (de->var_sheet, "vertical-axis", &var_vaxis, NULL);
 
-  psppire_axis_delete (var_vaxis, posn, 1);
+  psppire_axis_delete (var_vaxis, dict_idx, 1);
 
-  psppire_axis_delete (de->haxis, posn, 1);
+  psppire_axis_delete (de->haxis, dict_idx, 1);
 }
 
 
 
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2006, 2008, 2009, 2010  Free Software Foundation
+   Copyright (C) 2006, 2008, 2009, 2010, 2012  Free Software Foundation
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    A callback which occurs after a variable has been deleted.
  */
 static void
-delete_variable_callback (GObject *obj, gint dict_index,
-                         gint case_index, gint width,
+delete_variable_callback (GObject *obj, const struct variable *var UNUSED,
+                          gint dict_index, gint case_index,
                          gpointer data)
 {
   PsppireDataStore *store  = PSPPIRE_DATA_STORE (data);
 
                  G_SIGNAL_RUN_FIRST,
                  0,
                  NULL, NULL,
-                 psppire_marshal_VOID__INT_INT_INT,
+                 psppire_marshal_VOID__POINTER_INT_INT,
                  G_TYPE_NONE,
                  3,
-                 G_TYPE_INT,
+                 G_TYPE_POINTER,
                  G_TYPE_INT,
                  G_TYPE_INT);
 
 }
 
 static void
-delcb (struct dictionary *d, int dict_idx, int case_idx, int width, void *pd)
+delcb (struct dictionary *d, const struct variable *var,
+       int dict_idx, int case_idx, void *pd)
 {
   g_signal_emit (pd, signals [VARIABLE_DELETED], 0,
-                 dict_idx, case_idx, width );
+                 var, dict_idx, case_idx);
 }
 
 static void
 
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2006, 2009, 2010, 2011  Free Software Foundation
+   Copyright (C) 2006, 2009, 2010, 2011, 2012  Free Software Foundation
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
 
 static void
-var_delete_callback (GtkWidget *w, gint dict_idx, gint case_idx, gint val_cnt, gpointer data)
+var_delete_callback (GtkWidget *w, const struct variable *var UNUSED,
+                     gint dict_idx, gint case_idx UNUSED, gpointer data)
 {
   PsppireSheetModel *model = PSPPIRE_SHEET_MODEL (data);