diff --git a/Common/OpenFile.cpp b/Common/OpenFile.cpp
index 0820013b7c2ae3d914e4de099d41fb12f8140e04..9b5180056c4908b6c9f631ce38edd2b4cffb86ea 100644
--- a/Common/OpenFile.cpp
+++ b/Common/OpenFile.cpp
@@ -426,6 +426,7 @@ void OpenProject(const char *name)
   if(!CTX.batch){
     WID->reset_visibility();
     WID->update_views();
+    WID->update_fields();
   }
   ZeroHighlight();
 #endif
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 20a5accb0ae39325b976b89ca360d54c0c71a5f4..2185833b9d9f6ee230c9afb398aec244e6c444d3 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -4334,80 +4334,60 @@ void view_plugin_cb(CALLBACK_ARGS)
 
 void view_field_cb(CALLBACK_ARGS)
 {
-  WID->create_field_window((int)(long)data);
-}
-
-void view_field_cancel_cb(CALLBACK_ARGS)
-{
-  WID->field_window->hide();
+  WID->field_window->show();
+  WID->edit_field(NULL);
 }
 
 void view_field_delete_cb(CALLBACK_ARGS)
 {
-  FieldDialogBox *fdb = (FieldDialogBox*)data;
-  fdb->group->hide();
-  delete_field(fdb->current_field->id, CTX.filename);
-  WID->create_field_window(0);
-}
-
-void view_field_set_size_btn_cb(CALLBACK_ARGS)
-{
-  FieldDialogBox *fdb = (FieldDialogBox*)data;
-  fdb->group->hide();
-  int v = ((Fl_Check_Button*)w)->value();
-  if(v)
-    set_background_field(fdb->current_field->id, CTX.filename);
-  else
-    set_background_field(-1, CTX.filename);
-  WID->create_field_window(fdb->current_field->id);
+  Field *f=(Field*)WID->field_editor_group->user_data();
+  delete_field(f->id, CTX.filename);
+  WID->edit_field(NULL);
 }
 
 void view_field_new_cb(CALLBACK_ARGS)
 {
   Fl_Menu_Button* mb = ((Fl_Menu_Button*)w);
-  int id = GModel::current()->getFields()->new_id();
+  FieldManager *fields=GModel::current()->getFields();
+  int id = fields->new_id();
   add_field(id, mb->text(), CTX.filename);
-  WID->create_field_window(id);
+  WID->edit_field((*fields)[id]);
 }
 
 void view_field_apply_cb(CALLBACK_ARGS)
 {
-  FieldDialogBox *fdb = (FieldDialogBox*)data;
-  fdb->save_values();
-  int selected = WID->field_browser->value();
-  std::ostringstream sstream("");
-  sstream << fdb->current_field->id;
-  sstream << " " << fdb->current_field->get_name();
-  WID->field_browser->text(selected, sstream.str().c_str());
+  WID->save_field_options();
 }
 
 void view_field_revert_cb(CALLBACK_ARGS)
 {
-  FieldDialogBox *fdb = (FieldDialogBox*)data;
-  fdb->load_field(fdb->current_field);
+  WID->load_field_options();
 }
 
 void view_field_browser_cb(CALLBACK_ARGS)
 {
   int selected = WID->field_browser->value();
-  if(WID->selected_field_dialog_box){
-    WID->selected_field_dialog_box->group->hide();
+  if(!selected){
+    WID->edit_field(NULL);
   }
-  if(!selected) return;
   Field *f = (Field*)WID->field_browser->data(selected);
-  f->dialog_box()->load_field(f);
-  WID->selected_field_dialog_box = f->dialog_box();
-  f->dialog_box()->group->show();
+  WID->edit_field(f);
 }
 
 void view_field_put_on_view_cb(CALLBACK_ARGS)
 {
   Fl_Menu_Button* mb = ((Fl_Menu_Button*)w);
-  Field *field = ((FieldDialogBox*)data)->current_field;
+  Field *field = (Field*)WID->field_editor_group->user_data();
+  if(mb->value()==0){
+    WID->load_field_view_list();
+    return;
+  }
   int iView;
   sscanf(mb->text(), "View [%i]", &iView);
-  field->put_on_view(PView::list[iView]);
-  Draw();
+  if(iView<PView::list.size()){
+    field->put_on_view(PView::list[iView]);
+    Draw();
+  }
 }
 
 void view_field_select_file_cb(CALLBACK_ARGS){
diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h
index 584f9d9c534c24ba8fc1edcc36f28b167783a778..e632e181f2c0343f093620f0fa946f82d5c186c9 100644
--- a/Fltk/Callbacks.h
+++ b/Fltk/Callbacks.h
@@ -124,10 +124,8 @@ void view_field_cb(CALLBACK_ARGS);
 void view_field_new_cb(CALLBACK_ARGS);
 void view_field_apply_cb(CALLBACK_ARGS);
 void view_field_revert_cb(CALLBACK_ARGS);
-void view_field_cancel_cb(CALLBACK_ARGS);
 void view_field_browser_cb(CALLBACK_ARGS);
 void view_field_delete_cb(CALLBACK_ARGS);
-void view_field_set_size_btn_cb(CALLBACK_ARGS);
 void view_field_select_file_cb(CALLBACK_ARGS);
 void view_field_put_on_view_cb(CALLBACK_ARGS);
 void view_field_select_node_cb(CALLBACK_ARGS);
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index d4b8e55e107aff74145e448ae6ffa62f17a89142..1f8d46fd2f7df46cec7c15119c694ccc8391b4ee 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -312,7 +312,7 @@ Context_Item menu_mesh[] = {
 };  
     Context_Item menu_mesh_define[] = {
       {"1Mesh>Define", NULL} ,
-      {"Fields",      (Fl_Callback *)view_field_cb, (void*)(-1) },
+      {"Fields",      (Fl_Callback *)view_field_cb},
       {"Characteristic length", (Fl_Callback *)mesh_define_length_cb  } ,
       {"Recombine",   (Fl_Callback *)mesh_define_recombine_cb  } ,
       {"Transfinite", (Fl_Callback *)mesh_define_transfinite_cb  } , 
@@ -968,7 +968,7 @@ GUI::GUI(int argc, char **argv)
   
   create_option_window();
   create_plugin_window(0);
-  create_field_window(0);
+  create_field_window();
   create_message_window();
   create_statistics_window();
   create_visibility_window();
@@ -3739,10 +3739,32 @@ void GUI::create_plugin_window(int numview)
   plugin_window->end();
 }
 
-void FieldDialogBox::save_values()
-{
-  std::list<Fl_Widget*>::iterator input=inputs.begin();
-  Field *f=current_field;
+// field window
+void GUI::update_fields(){
+  edit_field(GModel::current()->getFields()->get(field_selected_id));
+}
+
+void GUI::load_field_list(){
+  FieldManager &fields=*GModel::current()->getFields();
+  Field *selected_field=(Field*)field_editor_group->user_data();
+  field_browser->clear();
+  int i_entry=0;
+  for(FieldManager::iterator it=fields.begin();it!=fields.end();it++){
+    i_entry++;
+    Field *field=it->second;
+    std::ostringstream sstream;
+    if(it->first==fields.background_field)
+      sstream<<"*";
+    sstream<<it->first<<" "<<field->get_name();
+    field_browser->add(sstream.str().c_str(),field);
+    if(it->second==selected_field)
+      field_browser->select(i_entry);
+  }
+}
+
+void GUI::save_field_options(){
+  std::list<Fl_Widget*>::iterator input=field_options_widget.begin();
+  Field *f=(Field*)field_editor_group->user_data();
   std::ostringstream sstream;
   int i;
   char a;
@@ -3786,11 +3808,21 @@ void FieldDialogBox::save_values()
     }
     input++;
   }
+  int is_bg_field=field_background_btn->value();
+  FieldManager &fields=*GModel::current()->getFields();
+  if(is_bg_field && fields.background_field!=f->id){
+    set_background_field(f->id, CTX.filename);
+    load_field_list();
+  }
+  if(!is_bg_field && fields.background_field==f->id){
+    set_background_field(-1, CTX.filename);
+    load_field_list();
+  }
 }
-void FieldDialogBox::load_field(Field *f)
-{
-  current_field=f;
-  std::list<Fl_Widget*>::iterator input=inputs.begin();
+
+void GUI::load_field_options(){
+  Field *f=(Field*)field_editor_group->user_data();
+  std::list<Fl_Widget*>::iterator input=field_options_widget.begin();
   for(std::map<std::string,FieldOption*>::iterator it=f->options.begin();it!=f->options.end();it++){
     FieldOption *option=it->second;
     std::ostringstream vstr;
@@ -3817,158 +3849,150 @@ void FieldDialogBox::load_field(Field *f)
       ((Fl_Input*)(*input))->value(vstr.str().c_str());
       break;
     }
+    (*input)->clear_changed();
     input++;
   }
+  field_background_btn->value(GModel::current()->getFields()->background_field==f->id);
+}
+
+void GUI::load_field_view_list(){
+  field_put_on_view_btn->clear();
+  field_put_on_view_btn->add("refresh view list");
   if(PView::list.size()){
-    put_on_view_btn->activate();
     for(unsigned int i = 0; i < PView::list.size(); i++) {
       std::ostringstream s;
       s<<"View ["<<i<<"]";
-      put_on_view_btn->add(s.str().c_str());
+      field_put_on_view_btn->add(s.str().c_str());
     }
   }
-  else{
-    put_on_view_btn->deactivate();
-  }
-  set_size_btn->value(GModel::current()->getFields()->background_field==f->id);
 }
 
-FieldDialogBox::FieldDialogBox(Field *f, int x, int y, int width, int height,int fontsize)
-{
-  current_field=NULL;
-  group=new Fl_Group(x, y, width, height);
-  {
-    Fl_Box *b = new Fl_Box(x, y, width, BH,f->get_name());
-    b->labelfont(FL_BOLD);
-    Fl_Tabs *o = new Fl_Tabs(x, y + BH + WB, width, height-2*BH-2*WB);
-    group->resizable(o);
-    {
-      Fl_Group *g = new Fl_Group(x, y + 2*BH + WB, width, height - 2*BH-3*WB, "Options");
-      apply_btn = new Fl_Return_Button(x+width - BB-WB ,y+ height - 2*BH -2*WB, BB, BH, "Apply");
-      apply_btn->callback(view_field_apply_cb,this);
-      revert_btn = new Fl_Button(x+width - 2*BB-2*WB ,y+ height - 2*BH -2*WB, BB, BH, "Revert");
-      revert_btn->callback(view_field_revert_cb,this);
-      Fl_Scroll *s = new Fl_Scroll(x + WB, y + 2*WB + 2*BH, width - 2 * WB, height - 4*BH - 5 * WB);
-      int yy=y+3*WB+2*BH;
-      for(std::map<std::string,FieldOption*>::iterator it=f->options.begin();it!=f->options.end();it++){
+void GUI::edit_field(Field *f){
+  field_editor_group->user_data(f);
+  field_put_on_view_btn->deactivate();
+  field_delete_btn->deactivate();
+  if(f==NULL){
+    field_selected_id=-1;
+    field_editor_group->hide();
+    load_field_list();
+    return;
+  }
+  field_selected_id=f->id;
+  field_editor_group->show();
+  field_editor_group->user_data(f);
+  field_title->label(f->get_name());
+  field_options_scroll->clear();
+  field_options_widget.clear();
+  field_options_scroll->begin();
+  int x=field_options_scroll->x();
+  int yy=field_options_scroll->y()+WB;
+  for(std::map<std::string,FieldOption*>::iterator it=f->options.begin();it!=f->options.end();it++){
 	Fl_Widget *input;
 	switch(it->second->get_type()){
 	case FIELD_OPTION_INT:
 	case FIELD_OPTION_DOUBLE:
-	  input=new Fl_Value_Input(x+WB,yy,IW,BH,it->first.c_str());
+      input=new Fl_Value_Input(x,yy,IW,BH,it->first.c_str());
 	  break;
 	case FIELD_OPTION_BOOL:
-	  input=new Fl_Check_Button(x+WB,yy,BH,BH,it->first.c_str());
-	  break;
+    input=new Fl_Check_Button(x,yy,BH,BH,it->first.c_str());
+    break;
 	case FIELD_OPTION_PATH:
     {
-    Fl_Button *b=new Fl_Button(x+WB,yy,BH,BH,"S");
-	  input=new Fl_Input(x+2*WB+BH,yy,IW-WB-BH,BH,it->first.c_str());
+    Fl_Button *b=new Fl_Button(x,yy,BH,BH,"S");
+    input=new Fl_Input(x+WB+BH,yy,IW-WB-BH,BH,it->first.c_str());
     b->callback(view_field_select_file_cb, input);
     }
     break;
-	case FIELD_OPTION_STRING:
-	  input=new Fl_Input(x+WB,yy,IW,BH,it->first.c_str());
+	case FIELD_OPTION_STRING:{
+	  input=new Fl_Input(x,yy,IW,BH,it->first.c_str());
 	  break;
+  }
 	case FIELD_OPTION_LIST:
 	default:
-	  /*{
-	    Fl_Button *b=new Fl_Button(x+WB,yy,BH,BH);
-	    b->label("@+");
-	    b->callback(view_field_select_node_cb);
-	    }
-	    input=new Fl_Input(x+WB+2*BH,yy,IW-2*BH,BH,it->first.c_str());*/
-	  input=new Fl_Input(x+WB,yy,IW,BH,it->first.c_str());
+	  //{
+	  //  Fl_Button *b=new Fl_Button(x+WB,yy,BH,BH);
+	  //  b->label("@+");
+	  //  b->callback(view_field_select_node_cb);
+	  //  }
+	  //  input=new Fl_Input(x+WB+2*BH,yy,IW-2*BH,BH,it->first.c_str());
+	  input=new Fl_Input(x,yy,IW,BH,it->first.c_str());
 	  break;
 	}
 	input->align(FL_ALIGN_RIGHT);
-	inputs.push_back(input);
+	field_options_widget.push_back(input);
 	yy+=WB+BH;
       }
-      o->resizable(g); // to avoid ugly resizing of tab labels
-      g->resizable(s);
-      s->end();
-      g->end();
-    }
-    {
-      Fl_Group *g = new Fl_Group(x, y + 2*BH + WB, width, height - 2*BH-3*WB, "Help");
-      Fl_Browser *o = new Fl_Browser(x + WB, y + 2*WB + 2*BH, width - 2 * WB, height - 4 * WB - 3 * BH);
-      o->add(" ");
-      g->end();
-    }
-    o->end();
-  }
-  {
-    Fl_Button *b = new Fl_Button(x+width - BB,y+ height - BH , BB, BH, "Delete");
-    b->callback(view_field_delete_cb,this);
-  }
-  put_on_view_btn = new Fl_Menu_Button(x+width - BB-(int)(1.25*BB)-WB,y+ height - BH ,(int)(1.25*BB),BH,"Put on view");
-  put_on_view_btn->callback(view_field_put_on_view_cb,this);
-  
-  set_size_btn = new Fl_Check_Button(x,y+ height - BH, (int)(1.3*BB),BH,"Background size");
-  set_size_btn->callback(view_field_set_size_btn_cb,this);
-  
-  group->end();
-  group->hide();
+  field_options_scroll->end();
+  load_field_options();
+  field_options_scroll->damage(1);
+  load_field_view_list();
+  field_put_on_view_btn->activate();
+  field_delete_btn->activate();
+  load_field_list();
 }
 
-void GUI::create_field_window(int numfield)
+void GUI::create_field_window()
 {
   int width0 = 34 * fontsize + WB;
   int height0 = 13 * BH + 5 * WB;
-  
   int width = (CTX.field_size[0] < width0) ? width0 : CTX.field_size[0];
   int height = (CTX.field_size[1] < height0) ? height0 : CTX.field_size[1];
-  
-  int L1 = BB;
-  int i_entry=1;
-  if(field_window) {
-    width=field_window->w();
-    height=field_window->h();
-    FieldManager &fields=*GModel::current()->getFields();
-    field_browser->clear();
-    for(FieldManager::iterator it=fields.begin();it!=fields.end();it++){
-      Field *field=it->second;
-      std::ostringstream sstream;
-      if(it->first==fields.background_field)
-	sstream<<"*";
-      sstream<<it->first;
-      sstream<<" "<<field->get_name();
-      field_browser->add(sstream.str().c_str(),field);
-      if(!field->dialog_box()){
-	field_window->begin();
-	field->dialog_box()=new FieldDialogBox(field, 2 * WB + L1 , WB, width - L1 - 3 * WB, height - 2*WB  ,fontsize);
-	field_window->end();
-      }
-      if(it->second->id==numfield){
-	field_browser->select(i_entry);
-	field_browser->do_callback();
-      }
-      i_entry++;
-    }
-    field_window->show();
-    return;
-  }
-  
-  selected_field_dialog_box=NULL;
   field_window = new Dialog_Window(width, height, CTX.non_modal_windows, "Fields");
   field_window->box(GMSH_WINDOW_BOX);
-  Fl_Group *resize_box = new Fl_Group(2*WB+L1, 2*WB+BB,width-3*WB-L1, height - 3 * WB-BB);
-  resize_box->end();
-  {
-    Fl_Menu_Button *b= new Fl_Menu_Button(WB,WB,L1,BH,"New");
-    FieldManager &fields=*GModel::current()->getFields();
-    std::map<std::string, FieldFactory*>::iterator it;
-    for(it=fields.map_type_name.begin();it!=fields.map_type_name.end();it++)
-      b->add(it->first.c_str());
-    b->callback(view_field_new_cb);
-  }
-  field_browser = new Fl_Hold_Browser(WB, 2*WB+BH, L1, height - 3 * WB - BH);
+  int x=WB;
+  int y=WB;
+  int w=1.5*BB;
+  Fl_Menu_Button *new_field_btn= new Fl_Menu_Button(x,y,w,BH,"New");
+  FieldManager &fields=*GModel::current()->getFields();
+  std::map<std::string, FieldFactory*>::iterator it;
+  for(it=fields.map_type_name.begin();it!=fields.map_type_name.end();it++)
+    new_field_btn->add(it->first.c_str());
+  new_field_btn->callback(view_field_new_cb);
+  y+=BH;
+  int h=height - 2*WB - 3*BH;
+  field_browser = new Fl_Hold_Browser(x, y+WB, w, h-2*WB);
+  y+=h; 
+  field_delete_btn = new Fl_Button(x,y,w, BH, "Delete");
+  field_delete_btn->callback(view_field_delete_cb,this);
+  y+=BH;
   field_browser->callback(view_field_browser_cb);
-  field_window->resizable(resize_box);
+  field_put_on_view_btn = new Fl_Menu_Button(x,y,w,BH,"Put on view");
+  field_put_on_view_btn->callback(view_field_put_on_view_cb,this);
+  x+=w+WB;
+  y=WB;
+  w=width-x-WB;
+  h=height-y-WB;
+  field_editor_group=new Fl_Group(x,y,w,h);
+  field_title=new Fl_Box(x,y,w,BH,"field_name");
+  y+=BH+WB;
+  h-=BH+WB;
+  field_title->labelfont(FL_BOLD);
+  Fl_Tabs *tabs = new Fl_Tabs(x, y , w, h);
+  y+=BH;
+  h-=BH;
+  x+=WB;
+  w-=2*WB;
+  Fl_Group *options_tab= new Fl_Group(x, y, w, h, "Options");
+  Fl_Scroll *options_scroll = new Fl_Scroll(x, y,w,h-BH-2*WB);
+  field_options_scroll=options_scroll;
+  options_tab->resizable(options_scroll);
+  options_scroll->end();
+  Fl_Button* apply_btn = new Fl_Return_Button(x+w - BB ,y+h-BH-WB, BB, BH, "Apply");
+  Fl_Button *revert_btn = new Fl_Button(x+w-2*BB-WB ,y+h-BH-WB, BB, BH, "Revert");
+  field_background_btn = new Fl_Check_Button(x,y+h-BH-WB,(int)(1.5*BB),BH,"Background size");
+  apply_btn->callback(view_field_apply_cb,this);
+  revert_btn->callback(view_field_revert_cb,this);
+  options_tab->end();
+  Fl_Group *help_tab= new Fl_Group(x, y, w, h, "Help");
+  Fl_Browser *help_browser = new Fl_Browser(x, y+WB, w, h);
+  help_tab->end();
+  tabs->end();
+  field_editor_group->end();
+  field_window->resizable(options_tab);
   field_window->size_range(width0, height0);
   field_window->position(CTX.field_position[0], CTX.field_position[1]);
   field_window->end();
+  edit_field(NULL);
 }
 
 // Create the window for the statistics
diff --git a/Fltk/GUI.h b/Fltk/GUI.h
index 2c507ca3b12ef9cef7cf4c59ea90538076af137b..84e82b1c1762c14b105826dcf2770dc4dd5df434 100644
--- a/Fltk/GUI.h
+++ b/Fltk/GUI.h
@@ -97,21 +97,6 @@ struct PluginDialogBox
   Fl_Input *input[MAX_PLUGIN_OPTIONS];
 };
 
-class FieldDialogBox
-{
-  std::list<Fl_Widget*> inputs;
-  std::list<std::string> inputs_values;
- public:
-  Field *current_field;
-  Fl_Group *group;
-  Fl_Menu_Button *put_on_view_btn;
-  Fl_Check_Button *set_size_btn;
-  Fl_Button *apply_btn,*revert_btn;
-  FieldDialogBox(Field *field, int x, int y, int width, int height, int fontsize);
-  void load_field(Field *field);
-  void save_values();
-};
-
 // The dialog for solvers
 
 struct SolverDialogBox
@@ -218,7 +203,14 @@ public:
   // Field window
   Fl_Window        *field_window;
   Fl_Hold_Browser  *field_browser;
-  FieldDialogBox   *selected_field_dialog_box;
+  std::list<Fl_Widget*> field_options_widget;
+  Fl_Scroll        *field_options_scroll;
+  Fl_Group         *field_editor_group;
+  Fl_Box           *field_title;
+  Fl_Check_Button  *field_background_btn;
+  Fl_Menu_Button   *field_put_on_view_btn;
+  Fl_Button        *field_delete_btn;
+  int              field_selected_id;
 
   // Plugin window
   Fl_Window        *plugin_window;
@@ -292,8 +284,7 @@ public:
   void create_view_options_window(int numview);
   void create_plugin_dialog_box(GMSH_Plugin *p, int x, int y, int width, int height);
   void create_plugin_window(int numview);
-  void create_field_dialog_box(Field *f, int x, int y, int width, int height);
-  void create_field_window(int numview);
+  void create_field_window();
   void create_visibility_window(bool redraw_only=false);
   void create_clip_window();
   void create_manip_window();
@@ -316,6 +307,12 @@ public:
   void set_context(Context_Item menu[], int flag);
   int  get_context();
   void update_views();
+  void update_fields();
+  void edit_field(Field *f);
+  void save_field_options();
+  void load_field_options();
+  void load_field_list();
+  void load_field_view_list();
   void set_anim_buttons(int mode);
   void check_anim_buttons();
   void set_status(const char *msg, int num);
diff --git a/Mesh/Field.cpp b/Mesh/Field.cpp
index 3e453120f1ba0766170d42a5554a8cbef59ee8d1..1876472f334b7b9efb3b1cb8e061f91804dd14da 100644
--- a/Mesh/Field.cpp
+++ b/Mesh/Field.cpp
@@ -146,7 +146,7 @@ void FieldManager::reset()
 Field *FieldManager::get(int id)
 {
   iterator it = find(id);
-  if(it == end()) return 0;
+  if(it == end()) return NULL;
   return it->second;
 }
 
@@ -298,11 +298,6 @@ class StructuredField : public Field
         }
     return v;
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
 };
 
 class UTMField : public Field
@@ -383,11 +378,6 @@ class UTMField : public Field
     if(!field) return MAX_LC;
     return (*field)(utm_x, utm_y, 0);
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
 };
 
 class LonLatField : public Field
@@ -409,11 +399,6 @@ class LonLatField : public Field
     if(!field) return MAX_LC;
     return (*field)(atan2(y, x), asin(z / sqrt(x * x + y * y + z * z)), 0);
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
 };
 
 class BoxField : public Field
@@ -436,11 +421,6 @@ class BoxField : public Field
   {
     return "Box";
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
   double operator() (double x, double y, double z)
   {
     return (x <= x_max && x >= x_min && y <= y_max && y >= y_min && z <= z_max
@@ -499,11 +479,6 @@ class ThresholdField : public Field
     }
     return lc;
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
 };
 
 class GradientField : public Field
@@ -556,11 +531,6 @@ class GradientField : public Field
       return MAX_LC;
     }
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
 };
 
 class CurvatureField : public Field
@@ -603,11 +573,6 @@ class CurvatureField : public Field
     return (grad[0][0] - grad[1][0] + grad[2][1] - 
 	    grad[3][1] + grad[4][2] - grad[5][2]) / delta;
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
 };
 
 #if defined(HAVE_GSL)
@@ -673,11 +638,6 @@ class MaxEigenHessianField : public Field
 			     fabs(gsl_vector_get(eigenvalues, 1)))
 		    ) / (delta * delta);
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
 };
 #endif
 
@@ -706,11 +666,6 @@ class LaplacianField : public Field
 	    +(*field) (x, y, z + delta )+ (*field) (x, y, z - delta )
 	    -6* (*field) (x , y, z)) / (delta*delta);
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
 };
 
 class MeanField : public Field
@@ -738,11 +693,6 @@ class MeanField : public Field
 	    + (*field) (x, y, z + delta) + (*field) (x, y, z - delta)
 	    + (*field) (x, y, z)) / 5;
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
 };
 
 #if defined(HAVE_MATH_EVAL)
@@ -858,11 +808,6 @@ class MathEvalField : public Field
     }
     return expr.evaluate(x, y, z);
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
   const char *get_name()
   {
     return "MathEval";
@@ -902,11 +847,6 @@ class ParametricField : public Field
 		    expr[1].evaluate(x, y, z),
 		    expr[2].evaluate(x, y, z));
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
   const char *get_name()
   {
     return "Param";
@@ -974,11 +914,6 @@ class PostViewField : public Field
     if(octree)
       delete octree;
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
 };
 #endif
 
@@ -1000,11 +935,6 @@ class MinField : public Field
     }
     return v;
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
   const char *get_name()
   {
     return "Min";
@@ -1029,11 +959,6 @@ class MaxField : public Field
     }
     return v;
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
   const char *get_name()
   {
     return "Max";
@@ -1141,11 +1066,6 @@ class AttractorField : public Field
     kdtree->annkSearch(xyz, 1, index, dist);
     return sqrt(dist[0]);
   }
-  FieldDialogBox *&dialog_box()
-  {
-    static FieldDialogBox *dialogBox = 0;
-    return dialogBox;
-  }
 };
 #endif
 
diff --git a/Mesh/Field.h b/Mesh/Field.h
index 00abcd052edf5e86765350bad4618fac5ab30ca0..a9c905a6a3917aae7acf552cad61b870d4f7a0cd 100644
--- a/Mesh/Field.h
+++ b/Mesh/Field.h
@@ -59,8 +59,6 @@ class FieldOption {
   virtual std::string &string() { throw(1); }
 };
 
-class FieldDialogBox;
-
 class Field {
  public:
   int id;
@@ -70,7 +68,6 @@ class Field {
   bool update_needed;
   Field();
   virtual const char *get_name() = 0;
-  virtual FieldDialogBox *&dialog_box() = 0;
 #if !defined(HAVE_NO_POST)
   void put_on_view(PView * view, int comp = -1);
 #endif