diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -90,5 +90,5 @@
   [1]: http://www.fltk.org/index.php      "FLTK"
   [2]: http://www.fltk.org/software.php
   [3]: http://hackage.haskell.org/package/fltkhs/docs/Graphics-UI-FLTK-LowLevel-FLTKHS.html
-  [4]: http://hackage.haskell.org/package/fltkhs-demos
-  [5]: http://hackage.haskell.org/package/fltkhs-fluid-demos
+  [4]: http://github.com/deech/fltkhs-demos
+  [5]: http://github.com/deech/fltkhs-fluid-demos
diff --git a/c-src/Fl_BrowserC.cpp b/c-src/Fl_BrowserC.cpp
--- a/c-src/Fl_BrowserC.cpp
+++ b/c-src/Fl_BrowserC.cpp
@@ -329,10 +329,10 @@
     return (static_cast<Fl_DerivedBrowser*>(browser))->visible_r();
   }
   FL_EXPORT_C(void,Fl_Browser_show_super)(fl_Browser browser){
-    return (static_cast<Fl_Browser*>(browser))->show();
+    return (static_cast<Fl_Browser*>(browser))->Fl_Browser::show();
   }
   FL_EXPORT_C(void,Fl_Browser_hide_super)(fl_Browser browser){
-    return (static_cast<Fl_Browser*>(browser))->hide();
+    return (static_cast<Fl_Browser*>(browser))->Fl_Browser::hide();
   }
   FL_EXPORT_C(void,Fl_Browser_clear_visible)(fl_Browser browser){
     (static_cast<Fl_DerivedBrowser*>(browser))->clear_visible();
@@ -425,13 +425,13 @@
     return (fl_Window) (static_cast<Fl_DerivedBrowser*>(browser))->top_window_offset(*xoff,*yoff);
   }
   FL_EXPORT_C(fl_Group,Fl_Browser_as_group_super)(fl_Browser browser){
-    return (fl_Group) (static_cast<Fl_Browser*>(browser))->as_group();
+    return (fl_Group) (static_cast<Fl_Browser*>(browser))->Fl_Browser::as_group();
   }
   FL_EXPORT_C(fl_Group,Fl_Browser_as_group)(fl_Browser browser){
     return (fl_Group) (static_cast<Fl_DerivedBrowser*>(browser))->as_group();
   }
   FL_EXPORT_C(fl_Gl_Window,Fl_Browser_as_gl_window_super)(fl_Browser browser){
-    return (fl_Gl_Window) (static_cast<Fl_Browser*>(browser))->as_gl_window();
+    return (fl_Gl_Window) (static_cast<Fl_Browser*>(browser))->Fl_Browser::as_gl_window();
   }
   FL_EXPORT_C(fl_Gl_Window,Fl_Browser_as_gl_window)(fl_Browser browser){
     return (fl_Gl_Window) (static_cast<Fl_DerivedBrowser*>(browser))->as_gl_window();
diff --git a/c-src/Fl_ButtonC.cpp b/c-src/Fl_ButtonC.cpp
--- a/c-src/Fl_ButtonC.cpp
+++ b/c-src/Fl_ButtonC.cpp
@@ -130,37 +130,37 @@
     (static_cast<Fl_DerivedButton*>(button))->draw_super();
   }
   FL_EXPORT_C(int,Fl_Button_handle_super )(fl_Button button,int event){
-    return (static_cast<Fl_Button*>(button))->handle(event);
+    return (static_cast<Fl_Button*>(button))->Fl_Button::handle(event);
   }
   FL_EXPORT_C(int,Fl_Button_handle )(fl_Button button, int event){
     return (static_cast<Fl_DerivedButton*>(button))->handle(event);
   }
   FL_EXPORT_C(void,Fl_Button_resize_super )(fl_Button button,int x, int y, int w, int h){
-    (static_cast<Fl_Button*>(button))->resize(x,y,w,h);
+    (static_cast<Fl_Button*>(button))->Fl_Button::resize(x,y,w,h);
   }
   FL_EXPORT_C(void,Fl_Button_resize )(fl_Button button,int x, int y, int w, int h){
     (static_cast<Fl_DerivedButton*>(button))->resize(x,y,w,h);
   }
   FL_EXPORT_C(void,Fl_Button_show_super)(fl_Button button){
-    (static_cast<Fl_Button*>(button))->show();
+    (static_cast<Fl_Button*>(button))->Fl_Button::show();
   }
   FL_EXPORT_C(void,Fl_Button_show )(fl_Button button){
     (static_cast<Fl_DerivedButton*>(button))->show();
   }
   FL_EXPORT_C(void,Fl_Button_hide_super)(fl_Button button){
-    (static_cast<Fl_Button*>(button))->hide();
+    (static_cast<Fl_Button*>(button))->Fl_Button::hide();
   }
   FL_EXPORT_C(void,Fl_Button_hide )(fl_Button button){
     (static_cast<Fl_DerivedButton*>(button))->hide();
   }
   FL_EXPORT_C(fl_Window,Fl_Button_as_window_super)(fl_Button button){
-    return (static_cast<Fl_Button*>(button))->as_window();
+    return (static_cast<Fl_Button*>(button))->Fl_Button::as_window();
   }
   FL_EXPORT_C(fl_Window,Fl_Button_as_window )(fl_Button button){
     return (static_cast<Fl_DerivedButton*>(button))->as_window();
   }
   FL_EXPORT_C(fl_Gl_Window,Fl_Button_as_gl_window_super)(fl_Button button){
-    return (fl_Gl_Window) (static_cast<Fl_Button*>(button))->as_gl_window();
+    return (fl_Gl_Window) (static_cast<Fl_Button*>(button))->Fl_Button::as_gl_window();
   }
   FL_EXPORT_C(fl_Gl_Window,Fl_Button_as_gl_window )(fl_Button button){
     return (fl_Gl_Window) (static_cast<Fl_DerivedButton*>(button))->as_gl_window();
@@ -443,7 +443,7 @@
     return (fl_Group) (static_cast<Fl_DerivedButton*>(button))->as_group();
   }
   FL_EXPORT_C(fl_Group,Fl_Button_as_group_super)(fl_Button button){
-    return (fl_Group) (static_cast<Fl_Button*>(button))->as_group();
+    return (fl_Group) (static_cast<Fl_Button*>(button))->Fl_Button::as_group();
   }
   FL_EXPORT_C(void*, Fl_Button_other_data)(fl_Button button){
     return (static_cast<Fl_DerivedButton*>(button))->get_other_data();
diff --git a/c-src/Fl_Double_WindowC.cpp b/c-src/Fl_Double_WindowC.cpp
--- a/c-src/Fl_Double_WindowC.cpp
+++ b/c-src/Fl_Double_WindowC.cpp
@@ -3,206 +3,206 @@
 
 #ifdef __cplusplus
 Fl_DerivedDouble_Window::Fl_DerivedDouble_Window(int X, int Y, int W, int H, const char *l, fl_Window_Virtual_Funcs* funcs) : Fl_Double_Window(X,Y,W,H,l){
-overriddenFuncs = funcs;
-other_data = 0;
+  overriddenFuncs = funcs;
+  other_data = 0;
 }
 Fl_DerivedDouble_Window::Fl_DerivedDouble_Window(int X, int Y, int W, int H, fl_Window_Virtual_Funcs* funcs):Fl_Double_Window(X,Y,W,H,0){
-overriddenFuncs = funcs;
-other_data = 0;
+  overriddenFuncs = funcs;
+  other_data = 0;
 }
 Fl_DerivedDouble_Window::Fl_DerivedDouble_Window(int W, int H, const char *l, fl_Window_Virtual_Funcs* funcs) :Fl_Double_Window(W,H,l){
-overriddenFuncs = funcs;
-other_data = 0;
+  overriddenFuncs = funcs;
+  other_data = 0;
 }
 Fl_DerivedDouble_Window::Fl_DerivedDouble_Window(int W, int H, fl_Window_Virtual_Funcs* funcs):Fl_Double_Window(W,H,0){
-overriddenFuncs = funcs;
-other_data = 0;
+  overriddenFuncs = funcs;
+  other_data = 0;
 }
 Fl_DerivedDouble_Window::~Fl_DerivedDouble_Window(){
-destroy_data();
-free(overriddenFuncs);
+  destroy_data();
+  free(overriddenFuncs);
 }
 void* Fl_DerivedDouble_Window::get_other_data(){
-return this->other_data;
+  return this->other_data;
 }
 void Fl_DerivedDouble_Window::set_other_data(void* data){
-this->other_data = data;
+  this->other_data = data;
 }
 void Fl_DerivedDouble_Window::destroy_data(){
-if (this->overriddenFuncs->destroy_data != NULL){
-this->overriddenFuncs->destroy_data((fl_Window) this);
-}
+  if (this->overriddenFuncs->destroy_data != NULL){
+    this->overriddenFuncs->destroy_data((fl_Window) this);
+  }
 }
 void Fl_DerivedDouble_Window::draw_box(){
-Fl_Double_Window::draw_box();
+  Fl_Double_Window::draw_box();
 }
 void Fl_DerivedDouble_Window::draw_box(Fl_Boxtype t, Fl_Color c){
-Fl_Double_Window::draw_box(t,c);
+  Fl_Double_Window::draw_box(t,c);
 }
 void Fl_DerivedDouble_Window::draw_box(Fl_Boxtype t, int x,int y,int w,int h, Fl_Color c){
-Fl_Double_Window::draw_box(t,x,y,w,h,c);
+  Fl_Double_Window::draw_box(t,x,y,w,h,c);
 }
 void Fl_DerivedDouble_Window::draw_backdrop(){
-Fl_Double_Window::draw_backdrop();
+  Fl_Double_Window::draw_backdrop();
 }
 void Fl_DerivedDouble_Window::draw_focus(){
-Fl_Double_Window::draw_focus();
+  Fl_Double_Window::draw_focus();
 }
 void Fl_DerivedDouble_Window::draw_focus(Fl_Boxtype t, int x,int y,int w,int h){
-Fl_Double_Window::draw_focus(t,x,y,w,h);
+  Fl_Double_Window::draw_focus(t,x,y,w,h);
 }
 void Fl_DerivedDouble_Window::draw_label(){
-Fl_Double_Window::draw_label();
+  Fl_Double_Window::draw_label();
 }
 void Fl_DerivedDouble_Window::draw_label(int x,int y,int w,int h,Fl_Align alignment){
-Fl_Double_Window::draw_label(x,y,w,h,alignment);
+  Fl_Double_Window::draw_label(x,y,w,h,alignment);
 }
 void Fl_DerivedDouble_Window::draw_child(Fl_Widget* widget){
-Fl_Double_Window::draw_child(*widget);
+  Fl_Double_Window::draw_child(*widget);
 }
 void Fl_DerivedDouble_Window::draw_children(){
-Fl_Double_Window::draw_children();
+  Fl_Double_Window::draw_children();
 }
 void Fl_DerivedDouble_Window::draw_outside_label(Fl_Widget* widget){
-Fl_Double_Window::draw_outside_label(*widget);
+  Fl_Double_Window::draw_outside_label(*widget);
 }
 void Fl_DerivedDouble_Window::update_child(Fl_Widget* widget){
-Fl_Double_Window::update_child(*widget);
+  Fl_Double_Window::update_child(*widget);
 }
 int* Fl_DerivedDouble_Window:: sizes(){
-return Fl_Double_Window::sizes();
+  return Fl_Double_Window::sizes();
 }
 int Fl_DerivedDouble_Window::handle(int event){
-int i;
-if (this->overriddenFuncs->handle != NULL) {
-i = this->overriddenFuncs->handle((fl_Window) this,event);
-}
-else {
-i = Fl_Double_Window::handle(event);
-}
-return i;
+  int i;
+  if (this->overriddenFuncs->handle != NULL) {
+    i = this->overriddenFuncs->handle((fl_Window) this,event);
+  }
+  else {
+    i = Fl_Double_Window::handle(event);
+  }
+  return i;
 }
 int Fl_DerivedDouble_Window::handle_super(int event){
-return Fl_Double_Window::handle(event);
+  return Fl_Double_Window::handle(event);
 }
 void Fl_DerivedDouble_Window::resize(int x, int y, int w, int h){
-if (this->overriddenFuncs->resize != NULL) {
-this->overriddenFuncs->resize((fl_Window) this,x,y,w,h);
-}
-else {
-Fl_Double_Window::resize(x,y,w,h);
-}
+  if (this->overriddenFuncs->resize != NULL) {
+    this->overriddenFuncs->resize((fl_Window) this,x,y,w,h);
+  }
+  else {
+    Fl_Double_Window::resize(x,y,w,h);
+  }
 }
 void Fl_DerivedDouble_Window::resize_super(int x, int y, int w, int h){
-Fl_Double_Window::resize(x,y,w,h);
+  Fl_Double_Window::resize(x,y,w,h);
 }
 void Fl_DerivedDouble_Window::flush(){
-if (this->overriddenFuncs->flush != NULL) {
-this->overriddenFuncs->flush((fl_Window) this);
-}
-else {
-Fl_Double_Window::flush();
-}
+  if (this->overriddenFuncs->flush != NULL) {
+    this->overriddenFuncs->flush((fl_Window) this);
+  }
+  else {
+    Fl_Double_Window::flush();
+  }
 }
 void Fl_DerivedDouble_Window::flush_super(){
-Fl_Double_Window::flush();
+  Fl_Double_Window::flush();
 }
 void Fl_DerivedDouble_Window::show(){
-if (this->overriddenFuncs->show != NULL) {
-this->overriddenFuncs->show((fl_Window) this);
-}
-else {
-Fl_Double_Window::show();
-}
+  if (this->overriddenFuncs->show != NULL) {
+    this->overriddenFuncs->show((fl_Window) this);
+  }
+  else {
+    Fl_Double_Window::show();
+  }
 }
 void Fl_DerivedDouble_Window::show_super(){
-Fl_Double_Window::show();
+  Fl_Double_Window::show();
 }
 void Fl_DerivedDouble_Window::show(int argc, char** argv){
-Fl_Double_Window::show(argc,argv);
+  Fl_Double_Window::show(argc,argv);
 }
 void Fl_DerivedDouble_Window::hide(){
-if (this->overriddenFuncs->hide != NULL) {
-this->overriddenFuncs->hide((fl_Window) this);
-}
-else {
-Fl_Double_Window::hide();
-}
+  if (this->overriddenFuncs->hide != NULL) {
+    this->overriddenFuncs->hide((fl_Window) this);
+  }
+  else {
+    Fl_Double_Window::hide();
+  }
 }
 void Fl_DerivedDouble_Window::hide_super(){
-Fl_Double_Window::hide();
+  Fl_Double_Window::hide();
 }
 void Fl_DerivedDouble_Window::draw(){
-if (this->overriddenFuncs->draw != NULL) {
-this->overriddenFuncs->draw((fl_Window) this);
-}
-else {
-Fl_Double_Window::draw();
-}
+  if (this->overriddenFuncs->draw != NULL) {
+    this->overriddenFuncs->draw((fl_Window) this);
+  }
+  else {
+    Fl_Double_Window::draw();
+  }
 }
 void Fl_DerivedDouble_Window::draw_super(){
-Fl_Double_Window::draw();
+  Fl_Double_Window::draw();
 }
 Fl_Window* Fl_DerivedDouble_Window::as_window(){
-Fl_Window* win;
-if (this->overriddenFuncs->as_window != NULL) {
-win = (static_cast<Fl_Window*>(this->overriddenFuncs->as_window((fl_Window) this)));
-}
-else {
-win = Fl_Double_Window::as_window();
-}
-return win;
+  Fl_Window* win;
+  if (this->overriddenFuncs->as_window != NULL) {
+    win = (static_cast<Fl_Window*>(this->overriddenFuncs->as_window((fl_Window) this)));
+  }
+  else {
+    win = Fl_Double_Window::as_window();
+  }
+  return win;
 }
 Fl_Window* Fl_DerivedDouble_Window::as_window_super(){
-return Fl_Double_Window::as_window();
+  return Fl_Double_Window::as_window();
 }
 Fl_Group* Fl_DerivedDouble_Window::as_group(){
-Fl_Group* grp;
-if (this->overriddenFuncs->as_group != NULL) {
-grp= (static_cast<Fl_Window*>(this->overriddenFuncs->as_group((fl_Window) this)));
-}
-else {
-grp= Fl_Double_Window::as_group();
-}
-return grp;
+  Fl_Group* grp;
+  if (this->overriddenFuncs->as_group != NULL) {
+    grp= (static_cast<Fl_Window*>(this->overriddenFuncs->as_group((fl_Window) this)));
+  }
+  else {
+    grp= Fl_Double_Window::as_group();
+  }
+  return grp;
 }
 Fl_Group* Fl_DerivedDouble_Window::as_group_super(){
-return Fl_Double_Window::as_group();
+  return Fl_Double_Window::as_group();
 }
 Fl_Gl_Window* Fl_DerivedDouble_Window::as_gl_window(){
-Fl_Gl_Window* win;
-if (this->overriddenFuncs->as_gl_window != NULL) {
-win = (static_cast<Fl_Gl_Window*>(this->overriddenFuncs->as_gl_window((fl_Window) this)));
-}
-else {
-win = Fl_Double_Window::as_gl_window();
-}
-return win;
+  Fl_Gl_Window* win;
+  if (this->overriddenFuncs->as_gl_window != NULL) {
+    win = (static_cast<Fl_Gl_Window*>(this->overriddenFuncs->as_gl_window((fl_Window) this)));
+  }
+  else {
+    win = Fl_Double_Window::as_gl_window();
+  }
+  return win;
 }
 Fl_Gl_Window* Fl_DerivedDouble_Window::as_gl_window_super(){
-return Fl_Double_Window::as_gl_window();
+  return Fl_Double_Window::as_gl_window();
 }
 EXPORT {
 #endif
-FL_EXPORT_C(fl_Double_Window_Virtual_Funcs*, Fl_Double_Window_default_virtual_funcs)(){
-fl_Double_Window_Virtual_Funcs* ptr = (fl_Double_Window_Virtual_Funcs*)malloc(sizeof(fl_Double_Window_Virtual_Funcs));
-ptr->draw = NULL;
-ptr->handle = NULL;
-ptr->resize = NULL;
-ptr->show  = NULL;
-ptr->hide = NULL;
-ptr->as_window = NULL;
-ptr->as_gl_window = NULL;
-ptr->flush = NULL;
-ptr->destroy_data = NULL;
-return ptr;
-}
-FL_EXPORT_C(fl_Window,Fl_Double_Window_as_window)(fl_Double_Window self){
-return (fl_Window)(static_cast<Fl_DerivedDouble_Window*>(self))->as_window();
-}
-FL_EXPORT_C(fl_Window,Fl_Double_Window_as_window_super)(fl_Double_Window self){
-return (fl_Window)(static_cast<Fl_DerivedDouble_Window*>(self))->as_window_super();
+  FL_EXPORT_C(fl_Double_Window_Virtual_Funcs*, Fl_Double_Window_default_virtual_funcs)(){
+    fl_Double_Window_Virtual_Funcs* ptr = (fl_Double_Window_Virtual_Funcs*)malloc(sizeof(fl_Double_Window_Virtual_Funcs));
+    ptr->draw = NULL;
+    ptr->handle = NULL;
+    ptr->resize = NULL;
+    ptr->show  = NULL;
+    ptr->hide = NULL;
+    ptr->as_window = NULL;
+    ptr->as_gl_window = NULL;
+    ptr->flush = NULL;
+    ptr->destroy_data = NULL;
+    return ptr;
   }
+  FL_EXPORT_C(fl_Window,Fl_Double_Window_as_window)(fl_Double_Window self){
+    return (fl_Window)(static_cast<Fl_DerivedDouble_Window*>(self))->as_window();
+  }
+  FL_EXPORT_C(fl_Window,Fl_Double_Window_as_window_super)(fl_Double_Window self){
+    return (fl_Window)(static_cast<Fl_DerivedDouble_Window*>(self))->as_window_super();
+  }
   FL_EXPORT_C(int,Fl_Double_Window_handle)(fl_Double_Window self, int event){
     return (static_cast<Fl_DerivedDouble_Window*>(self))->handle(event);
   }
@@ -475,7 +475,7 @@
     return (fl_Gl_Window) (static_cast<Fl_DerivedDouble_Window*>(win))->as_gl_window();
   }
   FL_EXPORT_C(fl_Gl_Window,Fl_Double_Window_as_gl_window_super)(fl_Double_Window win){
-    return (fl_Gl_Window) (static_cast<Fl_DerivedDouble_Window*>(win))->as_gl_window();
+    return (fl_Gl_Window) (static_cast<Fl_DerivedDouble_Window*>(win))->Fl_Double_Window::as_gl_window();
   }
   FL_EXPORT_C(void, Fl_Double_Window_draw_child)(fl_Double_Window Double_Window,fl_Widget widget){
     (static_cast<Fl_DerivedDouble_Window*>(Double_Window))->draw_child(static_cast<Fl_Widget*>(widget));
diff --git a/c-src/Fl_Menu_C.cpp b/c-src/Fl_Menu_C.cpp
--- a/c-src/Fl_Menu_C.cpp
+++ b/c-src/Fl_Menu_C.cpp
@@ -116,31 +116,31 @@
     return ptr;
   }
   FL_EXPORT_C(int,Fl_Menu__handle_super )(fl_Menu_ menu_,int event){
-    return (static_cast<Fl_Menu_*>(menu_))->handle(event);
+    return (static_cast<Fl_Menu_*>(menu_))->Fl_Menu_::handle(event);
   }
   FL_EXPORT_C(int,Fl_Menu__handle )(fl_Menu_ menu_, int event){
     return (static_cast<Fl_DerivedMenu_*>(menu_))->handle(event);
   }
   FL_EXPORT_C(void,Fl_Menu__resize_super )(fl_Menu_ menu_,int x, int y, int w, int h){
-    (static_cast<Fl_Menu_*>(menu_))->resize(x,y,w,h);
+    (static_cast<Fl_Menu_*>(menu_))->Fl_Menu_::resize(x,y,w,h);
   }
   FL_EXPORT_C(void,Fl_Menu__resize )(fl_Menu_ menu_,int x, int y, int w, int h){
     (static_cast<Fl_DerivedMenu_*>(menu_))->resize(x,y,w,h);
   }
   FL_EXPORT_C(void,Fl_Menu__show_super)(fl_Menu_ menu_){
-    (static_cast<Fl_Menu_*>(menu_))->show();
+    (static_cast<Fl_Menu_*>(menu_))->Fl_Menu_::show();
   }
   FL_EXPORT_C(void,Fl_Menu__show )(fl_Menu_ menu_){
     (static_cast<Fl_DerivedMenu_*>(menu_))->show();
   }
   FL_EXPORT_C(void,Fl_Menu__hide_super)(fl_Menu_ menu_){
-    (static_cast<Fl_Menu_*>(menu_))->hide();
+    (static_cast<Fl_Menu_*>(menu_))->Fl_Menu_::hide();
   }
   FL_EXPORT_C(void,Fl_Menu__hide )(fl_Menu_ menu_){
     (static_cast<Fl_DerivedMenu_*>(menu_))->hide();
   }
   FL_EXPORT_C(fl_Window,Fl_Menu__as_window_super)(fl_Menu_ menu_){
-    return (fl_Window)(static_cast<Fl_Menu_*>(menu_))->as_window();
+    return (fl_Window)(static_cast<Fl_Menu_*>(menu_))->Fl_Menu_::as_window();
   }
   FL_EXPORT_C(fl_Window,Fl_Menu__as_window )(fl_Menu_ menu_){
     return (fl_Window)(static_cast<Fl_DerivedMenu_*>(menu_))->as_window();
@@ -152,7 +152,7 @@
     return (fl_Group)(static_cast<Fl_DerivedMenu_*>(menu_))->as_group();
   }
   FL_EXPORT_C(fl_Gl_Window,Fl_Menu__as_gl_window_super)(fl_Menu_ menu_){
-    return (fl_Gl_Window) (static_cast<Fl_Menu_*>(menu_))->as_gl_window();
+    return (fl_Gl_Window) (static_cast<Fl_Menu_*>(menu_))->Fl_Menu_::as_gl_window();
   }
   FL_EXPORT_C(fl_Gl_Window,Fl_Menu__as_gl_window )(fl_Menu_ menu_){
     return (fl_Gl_Window) (static_cast<Fl_DerivedMenu_*>(menu_))->as_gl_window();
diff --git a/c-src/Fl_TableC.cpp b/c-src/Fl_TableC.cpp
--- a/c-src/Fl_TableC.cpp
+++ b/c-src/Fl_TableC.cpp
@@ -359,13 +359,13 @@
     return (static_cast<Fl_DerivedTable*>(table))->visible_r();
   }
   FL_EXPORT_C(void,Fl_Table_show_super)(fl_Table table){
-    return (static_cast<Fl_Table*>(table))->show();
+    return (static_cast<Fl_Table*>(table))->Fl_Table::show();
   }
   FL_EXPORT_C(void,Fl_Table_show)(fl_Table table){
     return (static_cast<Fl_DerivedTable*>(table))->show();
   }
   FL_EXPORT_C(void,Fl_Table_hide_super)(fl_Table table){
-    return (static_cast<Fl_Table*>(table))->hide();
+    return (static_cast<Fl_Table*>(table))->Fl_Table::hide();
   }
   FL_EXPORT_C(void,Fl_Table_hide)(fl_Table table){
     return (static_cast<Fl_DerivedTable*>(table))->hide();
@@ -461,13 +461,13 @@
     return (fl_Window) (static_cast<Fl_DerivedTable*>(table))->top_window_offset(*xoff,*yoff);
   }
   FL_EXPORT_C(fl_Group,Fl_Table_as_group_super)(fl_Table table){
-    return (fl_Group) (static_cast<Fl_Table*>(table))->as_group();
+    return (fl_Group) (static_cast<Fl_Table*>(table))->Fl_Table::as_group();
   }
   FL_EXPORT_C(fl_Group,Fl_Table_as_group)(fl_Table table){
     return (fl_Group) (static_cast<Fl_DerivedTable*>(table))->as_group();
   }
   FL_EXPORT_C(fl_Gl_Window,Fl_Table_as_gl_window_super)(fl_Table table){
-    return (fl_Gl_Window) (static_cast<Fl_Table*>(table))->as_gl_window();
+    return (fl_Gl_Window) (static_cast<Fl_Table*>(table))->Fl_Table::as_gl_window();
   }
   FL_EXPORT_C(fl_Gl_Window,Fl_Table_as_gl_window)(fl_Table table){
     return (fl_Gl_Window) (static_cast<Fl_DerivedTable*>(table))->as_gl_window();
@@ -526,13 +526,13 @@
     return (static_cast<Fl_DerivedTable*>(table))->cols();
   }
   FL_EXPORT_C(void,Fl_Table_set_rows_super)(fl_Table table,int val){
-    (static_cast<Fl_Table*>(table))->rows(val);
+    (static_cast<Fl_Table*>(table))->Fl_Table::rows(val);
   }
   FL_EXPORT_C(void,Fl_Table_set_rows)(fl_Table table, int val){
     (static_cast<Fl_DerivedTable*>(table))->rows(val);
   }
   FL_EXPORT_C(void,Fl_Table_set_cols_super)(fl_Table table,int val){
-    (static_cast<Fl_Table*>(table))->cols(val);
+    (static_cast<Fl_Table*>(table))->Fl_Table::cols(val);
   }
   FL_EXPORT_C(void,Fl_Table_set_cols)(fl_Table table, int val){
     (static_cast<Fl_DerivedTable*>(table))->cols(val);
@@ -659,7 +659,7 @@
   }
 
   FL_EXPORT_C(void,Fl_Table_draw_super)(fl_Table table){
-    return (static_cast<Fl_Table*>(table))->draw();
+    return (static_cast<Fl_Table*>(table))->Fl_Table::draw();
   }
   FL_EXPORT_C(void,Fl_Table_draw)(fl_Table table){
     return (static_cast<Fl_DerivedTable*>(table))->draw();
@@ -680,7 +680,7 @@
     (static_cast<Fl_Table*>(table))->remove(*(static_cast<Fl_Widget*>(w)));
   }
   FL_EXPORT_C(void,Fl_Table_clear_super)(fl_Table table){
-    (static_cast<Fl_Table*>(table))->clear();
+    (static_cast<Fl_Table*>(table))->Fl_Table::clear();
   }
   FL_EXPORT_C(void,Fl_Table_clear)(fl_Table table){
     (static_cast<Fl_DerivedTable*>(table))->clear();
diff --git a/c-src/Fl_Table_RowC.cpp b/c-src/Fl_Table_RowC.cpp
--- a/c-src/Fl_Table_RowC.cpp
+++ b/c-src/Fl_Table_RowC.cpp
@@ -189,6 +189,7 @@
   FL_EXPORT_C(int,Fl_Table_Row_handle)(fl_Table_Row self, int event){
     return (static_cast<Fl_DerivedTable_Row*>(self))->handle(event);
   }
+
   FL_EXPORT_C(int,Fl_Table_Row_handle_super)(fl_Table_Row self, int event){
     return (static_cast<Fl_DerivedTable_Row*>(self))->handle_super(event);
   }
@@ -365,13 +366,13 @@
     return (static_cast<Fl_DerivedTable_Row*>(table_row))->visible_r();
   }
   FL_EXPORT_C(void,Fl_Table_Row_show_super)(fl_Table_Row table_row){
-    return (static_cast<Fl_Table_Row*>(table_row))->show();
+    return (static_cast<Fl_Table_Row*>(table_row))->Fl_Table_Row::show();
   }
   FL_EXPORT_C(void,Fl_Table_Row_show)(fl_Table_Row table_row){
     return (static_cast<Fl_DerivedTable_Row*>(table_row))->show();
   }
   FL_EXPORT_C(void,Fl_Table_Row_hide_super)(fl_Table_Row table_row){
-    return (static_cast<Fl_Table_Row*>(table_row))->hide();
+    return (static_cast<Fl_Table_Row*>(table_row))->Fl_Table_Row::hide();
   }
   FL_EXPORT_C(void,Fl_Table_Row_hide)(fl_Table_Row table_row){
     return (static_cast<Fl_DerivedTable_Row*>(table_row))->hide();
@@ -467,13 +468,13 @@
     return (fl_Window) (static_cast<Fl_DerivedTable_Row*>(table_row))->top_window_offset(*xoff,*yoff);
   }
   FL_EXPORT_C(fl_Group,Fl_Table_Row_as_group_super)(fl_Table_Row table_row){
-    return (fl_Group) (static_cast<Fl_Table_Row*>(table_row))->as_group();
+    return (fl_Group) (static_cast<Fl_Table_Row*>(table_row))->Fl_Table_Row::as_group();
   }
   FL_EXPORT_C(fl_Group,Fl_Table_Row_as_group)(fl_Table_Row table_row){
     return (fl_Group) (static_cast<Fl_DerivedTable_Row*>(table_row))->as_group();
   }
   FL_EXPORT_C(fl_Gl_Window,Fl_Table_Row_as_gl_window_super)(fl_Table_Row table_row){
-    return (fl_Gl_Window) (fl_Gl_Window) (static_cast<Fl_Table_Row*>(table_row))->as_gl_window();
+    return (fl_Gl_Window) (fl_Gl_Window) (static_cast<Fl_Table_Row*>(table_row))->Fl_Table_Row::as_gl_window();
   }
   FL_EXPORT_C(fl_Gl_Window,Fl_Table_Row_as_gl_window)(fl_Table_Row table_row){
     return (fl_Gl_Window) (static_cast<Fl_DerivedTable_Row*>(table_row))->as_gl_window();
@@ -527,13 +528,13 @@
     return (static_cast<Fl_DerivedTable_Row*>(table_row))->cols();
   }
   FL_EXPORT_C(void,Fl_Table_Row_set_rows_super)(fl_Table_Row table_row,int val){
-    (static_cast<Fl_Table_Row*>(table_row))->rows(val);
+    (static_cast<Fl_Table_Row*>(table_row))->Fl_Table_Row::rows(val);
   }
   FL_EXPORT_C(void,Fl_Table_Row_set_rows)(fl_Table_Row table_row, int val){
     (static_cast<Fl_DerivedTable_Row*>(table_row))->rows(val);
   }
   FL_EXPORT_C(void,Fl_Table_Row_set_cols_super)(fl_Table_Row table_row,int val){
-    (static_cast<Fl_Table_Row*>(table_row))->cols(val);
+    (static_cast<Fl_Table_Row*>(table_row))->Fl_Table_Row::cols(val);
   }
   FL_EXPORT_C(void,Fl_Table_Row_set_cols)(fl_Table_Row table_row, int val){
     (static_cast<Fl_DerivedTable_Row*>(table_row))->cols(val);
@@ -660,7 +661,7 @@
   }
 
   FL_EXPORT_C(void,Fl_Table_Row_draw_super)(fl_Table_Row table_row){
-    (static_cast<Fl_Table_Row*>(table_row))->draw();
+    (static_cast<Fl_Table_Row*>(table_row))->Fl_Table_Row::draw();
   }
   FL_EXPORT_C(void,Fl_Table_Row_draw)(fl_Table_Row table_row){
     (static_cast<Fl_DerivedTable_Row*>(table_row))->draw();
@@ -681,7 +682,7 @@
     (static_cast<Fl_Table_Row*>(table_row))->remove(*(static_cast<Fl_Widget*>(w)));
   }
   FL_EXPORT_C(void,Fl_Table_Row_clear_super)(fl_Table_Row table_row){
-    (static_cast<Fl_Table_Row*>(table_row))->clear();
+    (static_cast<Fl_Table_Row*>(table_row))->Fl_Table_Row::clear();
   }
   FL_EXPORT_C(void,Fl_Table_Row_clear)(fl_Table_Row table_row){
     (static_cast<Fl_DerivedTable_Row*>(table_row))->clear();
diff --git a/c-src/Fl_WindowC.cpp b/c-src/Fl_WindowC.cpp
--- a/c-src/Fl_WindowC.cpp
+++ b/c-src/Fl_WindowC.cpp
@@ -593,19 +593,19 @@
     (static_cast<Fl_DerivedWindow*>(window))->draw_super();
   };
   FL_EXPORT_C(int,  Fl_Window_handle_super)(fl_Window window, int event){
-    return (static_cast<Fl_Window*>(window))->handle(event);
+    return (static_cast<Fl_Window*>(window))->Fl_Window::handle(event);
   };
   FL_EXPORT_C(fl_Group,  Fl_Window_as_group_super)(fl_Window window){
-    return (fl_Group)(static_cast<Fl_Window*>(window))->as_group();
+    return (fl_Group)(static_cast<Fl_Window*>(window))->Fl_Window::as_group();
   };
   FL_EXPORT_C(void, Fl_Window_resize_super)(fl_Window window, int x, int y, int w, int h){
-    (static_cast<Fl_Window*>(window))->resize(x, y, w, h);
+    (static_cast<Fl_Window*>(window))->Fl_Window::resize(x, y, w, h);
   };
   FL_EXPORT_C(void, Fl_Window_show_super)(fl_Window window){
-    (static_cast<Fl_Window*>(window))->show();
+    (static_cast<Fl_Window*>(window))->Fl_Window::show();
   };
   FL_EXPORT_C(void, Fl_Window_hide_super)(fl_Window window){
-    (static_cast<Fl_Window*>(window))->hide();
+    (static_cast<Fl_Window*>(window))->Fl_Window::hide();
   };
   FL_EXPORT_C(void, Fl_Window_flush_super)(fl_Window window){
     (static_cast<Fl_DerivedWindow*>(window))->flush_super();
diff --git a/fltkhs.cabal b/fltkhs.cabal
--- a/fltkhs.cabal
+++ b/fltkhs.cabal
@@ -1,5 +1,5 @@
 name : fltkhs
-version : 0.4.0.6
+version : 0.4.0.7
 synopsis : FLTK bindings
 description:
     Low level bindings for the FLTK GUI toolkit. For installation and quick start instruction please scroll all the way down to the README.
diff --git a/src/Fluid/Generate.hs b/src/Fluid/Generate.hs
--- a/src/Fluid/Generate.hs
+++ b/src/Fluid/Generate.hs
@@ -343,7 +343,7 @@
                      (foldl
                         (\(takenNames', outputSoFar) tree ->
                            let (output, newNames) = runState (widgetTreeG
-                                                               (case hsClassName of {
+                                                               (case flClassName of {
                                                                   "Submenu" -> menuName;
                                                                   _ -> (Just newName)
                                                                 })
@@ -353,7 +353,7 @@
                         (names, [])
                         trees)
               modify (\ns -> concatTakenNames ns newNames)
-              let code = (case hsClassName of
+              let code = (case flClassName of
                            "Submenu" ->
                               case menuName of
                                 Just mn ->
diff --git a/src/Graphics/UI/FLTK/LowLevel/Button.chs b/src/Graphics/UI/FLTK/LowLevel/Button.chs
--- a/src/Graphics/UI/FLTK/LowLevel/Button.chs
+++ b/src/Graphics/UI/FLTK/LowLevel/Button.chs
@@ -71,8 +71,8 @@
 instance (impl ~ (( IO ()))) => Op (DrawSuper ()) Button orig impl where
   runOp _ _ button = withRef button $ \buttonPtr -> drawSuper' buttonPtr
 {# fun Fl_Button_handle_super as handleSuper' { id `Ptr ()',`Int' } -> `Int' #}
-instance (impl ~ ((Int ->  IO (Int)))) => Op (HandleSuper ()) Button orig impl where
-  runOp _ _ button event = withRef button $ \buttonPtr -> handleSuper' buttonPtr event
+instance (impl ~ ((Event ->  IO (Int)))) => Op (HandleSuper ()) Button orig impl where
+  runOp _ _ button event = withRef button $ \buttonPtr -> handleSuper' buttonPtr (fromIntegral (fromEnum event))
 {#fun Fl_Button_handle as buttonHandle' { id `Ptr ()', id `CInt' } -> `Int' #}
 instance (impl ~ ((Event -> IO Int))) => Op (Handle ()) Button orig impl where
   runOp _ _ button event = withRef button (\p -> buttonHandle' p (fromIntegral . fromEnum $ event))
diff --git a/src/Graphics/UI/FLTK/LowLevel/DoubleWindow.chs b/src/Graphics/UI/FLTK/LowLevel/DoubleWindow.chs
--- a/src/Graphics/UI/FLTK/LowLevel/DoubleWindow.chs
+++ b/src/Graphics/UI/FLTK/LowLevel/DoubleWindow.chs
@@ -74,8 +74,8 @@
   runOp _ _ window = withRef window $ \windowPtr -> drawSuper' windowPtr
 
 {# fun Fl_Double_Window_handle_super as handleSuper' { id `Ptr ()',`Int' } -> `Int' #}
-instance (impl ~ (Int ->  IO (Int))) => Op (HandleSuper ()) DoubleWindow orig impl where
-  runOp _ _ window event = withRef window $ \windowPtr -> handleSuper' windowPtr event
+instance (impl ~ (Event ->  IO (Int))) => Op (HandleSuper ()) DoubleWindow orig impl where
+  runOp _ _ window event = withRef window $ \windowPtr -> handleSuper' windowPtr (fromIntegral (fromEnum event))
 
 {# fun Fl_Double_Window_resize_super as resizeSuper' { id `Ptr ()',`Int',`Int',`Int',`Int' } -> `()' supressWarningAboutRes #}
 instance (impl ~ (Rectangle -> IO ())) => Op (ResizeSuper ()) DoubleWindow orig impl where
diff --git a/src/Graphics/UI/FLTK/LowLevel/FLTKHS.hs b/src/Graphics/UI/FLTK/LowLevel/FLTKHS.hs
--- a/src/Graphics/UI/FLTK/LowLevel/FLTKHS.hs
+++ b/src/Graphics/UI/FLTK/LowLevel/FLTKHS.hs
@@ -285,10 +285,6 @@
 -- (6) includes a lot of complete working demos so that the user can get up and running faster. (see note below)
 -- (7) comes with GUI builder support to alleviate the tedium of laying out widgets by hand
 --
--- __Note__: As of version 0.4.0.1, the demos have been moved into their own
--- package <http://hackage.haskell.org/fltkhs-demos fltkhs-demos> for reasons
--- outlined in the =Demos= section of this document.
-
 -- $FluidSupport
 --
 -- This package also comes with a utility (fltkhs-fluidtohs) that takes a user
@@ -834,8 +830,14 @@
 
 -- $Demos
 --
+-- __Update__: As of 0.4.0.7 the <http://github.com/deech/fltkhs-demos FLTKHS demos> and the
+-- <http://github.com/deech/fltkhs-fluid-demos FLUID demos> will only be updated on Github.
+-- It is a chore to keep the versions of the demos on Hackage in sync with the proper version
+-- of <http://hackage.haskell.org/package/fltkhs FLTKHS> and Stack makes them easier
+-- to install (and play with ) than with Cabal.
+--
 -- __Update__: As of version 0.4.0.1 all the demos have been moved to their own
--- package <http://hackage.haskell.org/fltkhs-demos fltkhs-demos>. This speeds
+-- package <http://hackage.haskell.org/package/fltkhs-demos fltkhs-demos>. This speeds
 -- up installation of this package significantly and also allows the examples to
 -- be run interactively with `cabal repl`. This was an issue pre-0.4.0.1 because
 -- the REPL needed to link against the C library containing the C++ bindings and
@@ -844,17 +846,17 @@
 -- @Setup.hs@ to make the library visible.
 --
 -- There are currently two sets of FLTKHS demos, the ones that are part of the
--- <http://hackage.haskell.org/fltkhs-demos fltkhs-demos> package and ones that
+-- <http://hackage.haskell.org/package/fltkhs-demos fltkhs-demos> package and ones that
 -- show off <http://hackage.haskell.org/package/fltkhs-fluid-demos Fluid>
 -- support.
 --
--- Please see the README in the <http://hackage.haskell.org/fltkhs-demos fltkhs-demos> package for more information.
+-- Please see the README in the <http://hackage.haskell.org/package/fltkhs-demos fltkhs-demos> package for more information.
 --
 
 -- $GettingStarted
 --
 -- It is assumed that by this point the user has successfully installed this
--- library and demos in <http://hackage.haskell.org/fltkhs-demos fltkhs-demos> (see
+-- library and demos in <http://hackage.haskell.org/package/fltkhs-demos fltkhs-demos> (see
 -- above).
 --
 --
@@ -1069,12 +1071,12 @@
 -- runtime performance issues. This is only a compile time problem.
 --
 -- To preserve the user's and the author's sanity a flag `fastCompile` has been
--- introduced to the <http://hackage.haskell.org/fltkhs-demos fltkhs-demos> and
--- to the <http://hackage.haskell.org/fltkhs-fluid-demos fltkhs-fluid-demos>.
+-- introduced to the <http://hackage.haskell.org/package/fltkhs-demos fltkhs-demos> and
+-- to the <http://hackage.haskell.org/package/fltkhs-fluid-demos fltkhs-fluid-demos>.
 -- This flag which tells the compiler to skip the specialising step when
 -- compiling executables, dramatically decreases compile time but also bloats
 -- the resulting executable size and probably makes runtime performance much
--- slower. In this package and <http://hackage.haskell.org/fltkhs-fluid-demos fltkhs-fluid-demos>
+-- slower. In this package and <http://hackage.haskell.org/package/fltkhs-fluid-demos fltkhs-fluid-demos>
 -- it is enabled by default, since the executables are just
 -- demos that are not meant to show off performance. To disable this flag, tell
 -- Stack to ignore it during the `build` step:
diff --git a/src/Graphics/UI/FLTK/LowLevel/Hierarchy.hs b/src/Graphics/UI/FLTK/LowLevel/Hierarchy.hs
--- a/src/Graphics/UI/FLTK/LowLevel/Hierarchy.hs
+++ b/src/Graphics/UI/FLTK/LowLevel/Hierarchy.hs
@@ -2056,8 +2056,11 @@
 type ValuatorFuncs =
   (Destroy
   (Handle
+  (HandleSuper
   (ResizeSuper
   (Resize
+  (Hide
+  (HideSuper
   (Bounds
   (GetMinimum
   (SetMinimum
@@ -2075,7 +2078,7 @@
   (Increment
   (SetType
   (GetType_
-  ())))))))))))))))))))))
+  ()))))))))))))))))))))))))
 
 type instance Functions Valuator = ValuatorFuncs
 
@@ -2919,11 +2922,12 @@
   (SetRowsSuper
   (SetColsSuper
   (Handle
+  (HandleSuper
   (ResizeSuper
   (Resize
   (GetRowSelected
   (SelectAllRows
-  ())))))))))))))))
+  ()))))))))))))))))
 
 type instance Functions TableRow = TableRowFuncs
 
diff --git a/src/Graphics/UI/FLTK/LowLevel/MenuPrim.chs b/src/Graphics/UI/FLTK/LowLevel/MenuPrim.chs
--- a/src/Graphics/UI/FLTK/LowLevel/MenuPrim.chs
+++ b/src/Graphics/UI/FLTK/LowLevel/MenuPrim.chs
@@ -62,8 +62,8 @@
                              widgetDestroy' menu_Ptr >>
                              return nullPtr
 {# fun Fl_Menu__handle_super as handleSuper' { id `Ptr ()',`Int' } -> `Int' #}
-instance (impl ~ (Int ->  IO (Int))) => Op (HandleSuper ()) MenuPrim orig impl where
-  runOp _ _ menu_ event = withRef menu_ $ \menu_Ptr -> handleSuper' menu_Ptr event
+instance (impl ~ (Event ->  IO (Int))) => Op (HandleSuper ()) MenuPrim orig impl where
+  runOp _ _ menu_ event = withRef menu_ $ \menu_Ptr -> handleSuper' menu_Ptr (fromIntegral (fromEnum event))
 {#fun Fl_Menu__handle as menu_Handle' { id `Ptr ()', id `CInt' } -> `Int' #}
 instance (impl ~ (Event -> IO Int)) => Op (Handle ()) MenuPrim orig impl where
   runOp _ _ menu_ event = withRef menu_ (\p -> menu_Handle' p (fromIntegral . fromEnum $ event))
@@ -244,8 +244,8 @@
 instance (impl ~ (Int -> MenuItemFlags ->  IO ())) => Op (SetMode ()) MenuPrim orig impl where
   runOp _ _ menu_ i fl = withRef menu_ $ \menu_Ptr -> setMode' menu_Ptr i (menuItemFlagsToInt fl)
 {# fun Fl_Menu__mode as mode' { id `Ptr ()',`Int' } -> `Int' #}
-instance (impl ~ (Int ->  IO (Int))) => Op (GetMode ()) MenuPrim orig impl where
-  runOp _ _ menu_ i = withRef menu_ $ \menu_Ptr -> mode' menu_Ptr i
+instance (impl ~ (Int ->  IO (Maybe MenuItemFlags))) => Op (GetMode ()) MenuPrim orig impl where
+  runOp _ _ menu_ i = withRef menu_ $ \menu_Ptr -> mode' menu_Ptr i >>= return . intToMenuItemFlags
 {# fun Fl_Menu__mvalue as mvalue' { id `Ptr ()' } -> `Ptr ()' id #}
 instance (impl ~ (IO (Maybe (Ref MenuItem)))) => Op (Mvalue ()) MenuPrim orig impl where
   runOp _ _ menu_ = withRef menu_ $ \menu_Ptr -> mvalue' menu_Ptr >>= toMaybeRef
diff --git a/src/Graphics/UI/FLTK/LowLevel/Scrolled.chs b/src/Graphics/UI/FLTK/LowLevel/Scrolled.chs
--- a/src/Graphics/UI/FLTK/LowLevel/Scrolled.chs
+++ b/src/Graphics/UI/FLTK/LowLevel/Scrolled.chs
@@ -22,6 +22,7 @@
 import Graphics.UI.FLTK.LowLevel.Utils
 import Graphics.UI.FLTK.LowLevel.Hierarchy
 import Graphics.UI.FLTK.LowLevel.Dispatch
+import Graphics.UI.FLTK.LowLevel.Fl_Enumerations
 
 {# fun Fl_Scroll_New as scrollNew' { `Int',`Int',`Int',`Int' } -> `Ptr ()' id #}
 {# fun Fl_Scroll_New_WithLabel as scrollNewWithLabel' { `Int',`Int',`Int',`Int', unsafeToCString `String'} -> `Ptr ()' id #}
@@ -61,8 +62,8 @@
 instance (impl ~ (Rectangle ->  IO ())) => Op (Resize ()) Scrolled orig impl where
    runOp _ _ widget rectangle = let (x_pos', y_pos', width', height') = fromRectangle rectangle in withRef widget $ \scrollPtr -> resize' scrollPtr x_pos' y_pos' width' height'
 {# fun Fl_Scroll_handle as handle' { id `Ptr ()',`Int' } -> `Int' #}
-instance (impl ~ (Int ->  IO (Int))) => Op (Handle ()) Scrolled orig impl where
-   runOp _ _ widget event = withRef widget $ \scrollPtr -> handle' scrollPtr event
+instance (impl ~ (Event ->  IO (Int))) => Op (Handle ()) Scrolled orig impl where
+   runOp _ _ widget event = withRef widget $ \scrollPtr -> handle' scrollPtr (fromIntegral (fromEnum event))
 
 -- $hierarchy
 -- @
diff --git a/src/Graphics/UI/FLTK/LowLevel/SingleWindow.chs b/src/Graphics/UI/FLTK/LowLevel/SingleWindow.chs
--- a/src/Graphics/UI/FLTK/LowLevel/SingleWindow.chs
+++ b/src/Graphics/UI/FLTK/LowLevel/SingleWindow.chs
@@ -73,8 +73,8 @@
   runOp _ _ window = withRef window $ \windowPtr -> drawSuper' windowPtr
 
 {# fun Fl_Single_Window_handle_super as handleSuper' { id `Ptr ()',`Int' } -> `Int' #}
-instance (impl ~ (Int ->  IO (Int))) => Op (HandleSuper ()) SingleWindow orig impl where
-  runOp _ _ window event = withRef window $ \windowPtr -> handleSuper' windowPtr event
+instance (impl ~ (Event ->  IO (Int))) => Op (HandleSuper ()) SingleWindow orig impl where
+  runOp _ _ window event = withRef window $ \windowPtr -> handleSuper' windowPtr (fromIntegral (fromEnum event))
 
 {# fun Fl_Single_Window_resize_super as resizeSuper' { id `Ptr ()',`Int',`Int',`Int',`Int' } -> `()' supressWarningAboutRes #}
 instance (impl ~ (Rectangle -> IO ())) => Op (ResizeSuper ()) SingleWindow orig impl where
diff --git a/src/Graphics/UI/FLTK/LowLevel/SysMenuBar.chs b/src/Graphics/UI/FLTK/LowLevel/SysMenuBar.chs
--- a/src/Graphics/UI/FLTK/LowLevel/SysMenuBar.chs
+++ b/src/Graphics/UI/FLTK/LowLevel/SysMenuBar.chs
@@ -62,11 +62,11 @@
     withRef menu_ $ \menu_Ptr ->
         shortcut' menu_Ptr index' (keySequenceToCInt modifiers char)
 {# fun Fl_Sys_Menu_Bar_set_mode as setMode' { id `Ptr ()',`Int',`Int' } -> `()' #}
-instance (impl ~ (Int -> Int ->  IO ())) => Op (SetMode ()) SysMenuBar orig impl where
-  runOp _ _ menu_ i fl = withRef menu_ $ \menu_Ptr -> setMode' menu_Ptr i fl
+instance (impl ~ (Int -> MenuItemFlags ->  IO ())) => Op (SetMode ()) SysMenuBar orig impl where
+  runOp _ _ menu_ i fl = withRef menu_ $ \menu_Ptr -> setMode' menu_Ptr i (menuItemFlagsToInt fl)
 {# fun Fl_Sys_Menu_Bar_mode as mode' { id `Ptr ()',`Int' } -> `Int' #}
-instance (impl ~ (Int ->  IO (Int))) => Op (GetMode ()) SysMenuBar orig impl where
-  runOp _ _ menu_ i = withRef menu_ $ \menu_Ptr -> mode' menu_Ptr i
+instance (impl ~ (Int ->  IO (Maybe MenuItemFlags))) => Op (GetMode ()) SysMenuBar orig impl where
+  runOp _ _ menu_ i = withRef menu_ $ \menu_Ptr -> mode' menu_Ptr i >>= return . intToMenuItemFlags
 {# fun Fl_Sys_Menu_Bar_global as global' { id `Ptr ()' } -> `()' #}
 instance (impl ~ ( IO ())) => Op (Global ()) SysMenuBar orig impl where
   runOp _ _ menu_ = withRef menu_ $ \menu_Ptr -> global' menu_Ptr
diff --git a/src/Graphics/UI/FLTK/LowLevel/TableRow.chs b/src/Graphics/UI/FLTK/LowLevel/TableRow.chs
--- a/src/Graphics/UI/FLTK/LowLevel/TableRow.chs
+++ b/src/Graphics/UI/FLTK/LowLevel/TableRow.chs
@@ -69,6 +69,9 @@
 {# fun Fl_Table_Row_set_cols_super as setColsSuper' { id `Ptr ()',`Int' } -> `()' #}
 instance (impl ~ (Int ->  IO ())) => Op (SetColsSuper ()) TableRow orig impl where
   runOp _ _ table val = withRef table $ \tablePtr -> setColsSuper' tablePtr val
+{# fun Fl_Table_Row_handle_super as handleSuper' { id `Ptr ()', cFromEnum `Event' } -> `Int' #}
+instance (impl ~ (Event ->  IO (Int))) => Op (HandleSuper ()) TableRow orig impl where
+   runOp _ _ table event = withRef table $ \tablePtr -> handleSuper' tablePtr event
 {# fun Fl_Table_Row_handle as handle' { id `Ptr ()', cFromEnum `Event' } -> `Int' #}
 instance (impl ~ (Event ->  IO (Int))) => Op (Handle ()) TableRow orig impl where
   runOp _ _ table event = withRef table $ \tablePtr -> handle' tablePtr event
@@ -94,7 +97,6 @@
 
 -- $functions
 -- @
---
 -- clear :: 'Ref' 'TableRow' -> 'IO' ()
 --
 -- clearSuper :: 'Ref' 'TableRow' -> 'IO' ()
@@ -103,12 +105,14 @@
 --
 -- getRowSelected :: 'Ref' 'TableRow' -> 'Int' -> 'IO' ('Either' 'OutOfRange' 'Bool')
 --
--- getRows :: 'Ref' 'TableRow' -> 'IO' 'Int'
+-- getRows :: 'Ref' 'TableRow' -> 'IO' ('Int')
 --
--- getType :: 'Ref' 'TableRow' -> 'IO' 'TableRowSelectMode'
+-- getType_ :: 'Ref' 'TableRow' -> 'IO' 'TableRowSelectMode'
 --
--- handle :: 'Ref' 'TableRow' -> 'Event' -> 'IO' 'Int'
+-- handle :: 'Ref' 'TableRow' -> 'Event' -> 'IO' ('Int')
 --
+-- handleSuper :: 'Ref' 'TableRow' -> 'Event' -> 'IO' ('Int')
+--
 -- resize :: 'Ref' 'TableRow' -> 'Rectangle' -> 'IO' ()
 --
 -- resizeSuper :: 'Ref' 'TableRow' -> 'Rectangle' -> 'IO' ()
@@ -124,6 +128,7 @@
 -- setRowsSuper :: 'Ref' 'TableRow' -> 'Int' -> 'IO' ()
 --
 -- setType :: 'Ref' 'TableRow' -> 'TableRowSelectMode' -> 'IO' ()
+--
 -- @
 
 -- $hierarchy
diff --git a/src/Graphics/UI/FLTK/LowLevel/Valuator.chs b/src/Graphics/UI/FLTK/LowLevel/Valuator.chs
--- a/src/Graphics/UI/FLTK/LowLevel/Valuator.chs
+++ b/src/Graphics/UI/FLTK/LowLevel/Valuator.chs
@@ -65,9 +65,18 @@
   runOp _ _ win = swapRef win $ \winPtr -> do
                                         valuatorDestroy' winPtr
                                         return nullPtr
+{# fun Fl_Valuator_hide as hide' { id `Ptr ()' } -> `()' supressWarningAboutRes #}
+instance (impl ~ (( IO ()))) => Op (Hide ()) Valuator orig impl where
+  runOp _ _ button = withRef button $ \buttonPtr -> hide' buttonPtr
+{# fun Fl_Valuator_hide_super as hideSuper' { id `Ptr ()' } -> `()' supressWarningAboutRes #}
+instance (impl ~ (( IO ()))) => Op (HideSuper ()) Valuator orig impl where
+  runOp _ _ button = withRef button $ \buttonPtr -> hideSuper' buttonPtr
 {#fun Fl_Valuator_handle as valuatorHandle' { id `Ptr ()', id `CInt' } -> `Int' #}
 instance (impl ~ (Event -> IO Int)) => Op (Handle ()) Valuator orig impl where
   runOp _ _ valuator event = withRef valuator (\p -> valuatorHandle' p (fromIntegral . fromEnum $ event))
+{#fun Fl_Valuator_handle_super as valuatorHandleSuper' { id `Ptr ()', id `CInt' } -> `Int' #}
+instance (impl ~ (Event -> IO Int)) => Op (HandleSuper ()) Valuator orig impl where
+  runOp _ _ valuator event = withRef valuator (\p -> valuatorHandleSuper' p (fromIntegral . fromEnum $ event))
 {# fun Fl_Valuator_resize_super as resizeSuper' { id `Ptr ()',`Int',`Int',`Int',`Int' } -> `()' supressWarningAboutRes #}
 instance (impl ~ (Rectangle ->  IO ())) => Op (ResizeSuper ()) Valuator orig impl where
   runOp _ _ valuator rectangle = withRef valuator $ \valuatorPtr -> do
@@ -132,27 +141,32 @@
 
 -- $functions
 -- @
---
 -- bounds :: 'Ref' 'Valuator' -> 'Double' -> 'Double' -> 'IO' ()
 --
--- clamp :: 'Ref' 'Valuator' -> 'Double' -> 'IO' 'Double'
+-- clamp :: 'Ref' 'Valuator' -> 'Double' -> 'IO' ('Double')
 --
 -- destroy :: 'Ref' 'Valuator' -> 'IO' ()
 --
--- format :: 'Ref' 'Valuator' -> 'String' -> 'IO' 'Int'
+-- getMaximum :: 'Ref' 'Valuator' -> 'IO' ('Double')
 --
--- getMaximum :: 'Ref' 'Valuator' -> 'IO' 'Double'
+-- getMinimum :: 'Ref' 'Valuator' -> 'IO' ('Double')
 --
--- getMinimum :: 'Ref' 'Valuator' -> 'IO' 'Double'
+-- getStep :: 'Ref' 'Valuator' -> 'IO' ('Rational')
 --
--- getStep :: 'Ref' 'Valuator' -> 'IO' 'Rational'
+-- getType_ :: 'Ref' 'Valuator' -> 'IO' ('ValuatorType')
 --
--- getValue :: 'Ref' 'Valuator' -> 'IO' 'Double'
+-- getValue :: 'Ref' 'Valuator' -> 'IO' ('Double')
 --
 -- handle :: 'Ref' 'Valuator' -> 'Event' -> 'IO' 'Int'
 --
--- increment :: 'Ref' 'Valuator' -> 'Double' -> 'Int' -> 'IO' 'Double'
+-- handleSuper :: 'Ref' 'Valuator' -> 'Event' -> 'IO' 'Int'
 --
+-- hide :: 'Ref' 'Valuator' -> ( 'IO' ())
+--
+-- hideSuper :: 'Ref' 'Valuator' -> ( 'IO' ())
+--
+-- increment :: 'Ref' 'Valuator' -> 'Double' -> 'Int' -> 'IO' ('Double')
+--
 -- precision :: 'Ref' 'Valuator' -> 'Int' -> 'IO' ()
 --
 -- range :: 'Ref' 'Valuator' -> 'Double' -> 'Double' -> 'IO' ()
@@ -161,15 +175,19 @@
 --
 -- resizeSuper :: 'Ref' 'Valuator' -> 'Rectangle' -> 'IO' ()
 --
--- round :: 'Ref' 'Valuator' -> 'Double' -> 'IO' 'Double'
+-- round :: 'Ref' 'Valuator' -> 'Double' -> 'IO' ('Double')
 --
+-- setFormat :: 'Ref' 'Valuator' -> 'String' -> 'IO' ('Int')
+--
 -- setMaximum :: 'Ref' 'Valuator' -> 'Double' -> 'IO' ()
 --
 -- setMinimum :: 'Ref' 'Valuator' -> 'Double' -> 'IO' ()
 --
 -- setStep :: 'Ref' 'Valuator' -> 'Rational' -> 'IO' ()
 --
--- setValue :: 'Ref' 'Valuator' -> 'Double' -> 'IO' 'Int'
+-- setType :: 'Ref' 'Valuator' -> 'ValuatorType' -> 'IO' ()
+--
+-- setValue :: 'Ref' 'Valuator' -> 'Double' -> 'IO' ('Int')
 -- @
 
 -- $hierarchy
diff --git a/src/Graphics/UI/FLTK/LowLevel/Window.chs b/src/Graphics/UI/FLTK/LowLevel/Window.chs
--- a/src/Graphics/UI/FLTK/LowLevel/Window.chs
+++ b/src/Graphics/UI/FLTK/LowLevel/Window.chs
@@ -164,8 +164,8 @@
   runOp _ _ window = withRef window $ \windowPtr -> drawSuper' windowPtr
 
 {# fun Fl_Window_handle_super as handleSuper' { id `Ptr ()',`Int' } -> `Int' #}
-instance (impl ~ (Int ->  IO (Int))) => Op (HandleSuper ()) Window orig impl where
-  runOp _ _ window event = withRef window $ \windowPtr -> handleSuper' windowPtr event
+instance (impl ~ (Event ->  IO (Int))) => Op (HandleSuper ()) Window orig impl where
+  runOp _ _ window event = withRef window $ \windowPtr -> handleSuper' windowPtr (fromIntegral (fromEnum event))
 
 {# fun Fl_Window_resize_super as resizeSuper' { id `Ptr ()',`Int',`Int',`Int',`Int' } -> `()' supressWarningAboutRes #}
 instance (impl ~ (Rectangle -> IO ())) => Op (ResizeSuper ()) Window orig impl where
