diff --git a/c-src/Fl_File_BrowserC.cpp b/c-src/Fl_File_BrowserC.cpp
--- a/c-src/Fl_File_BrowserC.cpp
+++ b/c-src/Fl_File_BrowserC.cpp
@@ -595,6 +595,24 @@
   FL_EXPORT_C(void, Fl_File_Browser_hide_super)(fl_File_Browser o){
     (static_cast<Fl_DerivedFile_Browser*>(o))->hide_super();
   }
+  FL_EXPORT_C(fl_File_Browser, Fl_File_Browser_New_WithLabel)(int x, int y, int w, int h, const char* label){
+    fl_Widget_Virtual_Funcs* fs = Fl_Widget_default_virtual_funcs();
+    Fl_DerivedFile_Browser* b = new Fl_DerivedFile_Browser(x,y,w,h,label,fs);
+    return (fl_File_Browser)b;
+  }
+  FL_EXPORT_C(fl_File_Browser, Fl_File_Browser_New)(int x, int y, int w, int h){
+    fl_Widget_Virtual_Funcs* fs = Fl_Widget_default_virtual_funcs();
+    Fl_DerivedFile_Browser* b = new Fl_DerivedFile_Browser(x,y,w,h,fs);
+    return (fl_File_Browser)b;
+  }
+  FL_EXPORT_C(fl_File_Browser,    Fl_OverriddenFile_Browser_New)(int X, int Y, int W, int H,fl_Widget_Virtual_Funcs* fs){
+    Fl_DerivedFile_Browser* b = new Fl_DerivedFile_Browser(X,Y,W,H,fs);
+    return (fl_File_Browser)b;
+  }
+  FL_EXPORT_C(fl_File_Browser,    Fl_OverriddenFile_Browser_New_WithLabel)(int X, int Y, int W, int H, const char* label, fl_Widget_Virtual_Funcs* fs){
+    Fl_DerivedFile_Browser* b = new Fl_DerivedFile_Browser(X,Y,W,H,label,fs);
+    return (fl_File_Browser)b;
+  }
 #ifdef __cplusplus
 }
 #endif
diff --git a/c-src/Fl_TimerC.cpp b/c-src/Fl_TimerC.cpp
deleted file mode 100644
--- a/c-src/Fl_TimerC.cpp
+++ /dev/null
@@ -1,390 +0,0 @@
-#include "Fl_TimerC.h"
-#ifdef __cplusplus
-EXPORT {
-  Fl_DerivedTimer::Fl_DerivedTimer(uchar t,int X, int Y, int W, int H, const char *l, fl_Widget_Virtual_Funcs* funcs) : Fl_Timer(t,X,Y,W,H,l){
-    overriddenFuncs = funcs;
-    other_data = (void*)0;
-  }
-  Fl_DerivedTimer::~Fl_DerivedTimer(){
-    free(overriddenFuncs);
-  }
-  void Fl_DerivedTimer::draw(){
-    if (this->overriddenFuncs->draw != NULL) {
-      this->overriddenFuncs->draw((fl_Timer) this);
-    }
-    else {
-      Fl_Timer::draw();
-    }
-  }
-
-  void Fl_DerivedTimer::draw_super(){
-    Fl_Timer::draw();
-  }
-
-  int Fl_DerivedTimer::handle(int event){
-    int i;
-    if (this->overriddenFuncs->handle != NULL) {
-      i = this->overriddenFuncs->handle((fl_Timer) this,event);
-    }
-    else {
-      i = Fl_Timer::handle(event);
-    }
-    return i;
-  }
-  int Fl_DerivedTimer::handle_super(int event){
-    return Fl_Timer::handle(event);
-  }
-
-  void Fl_DerivedTimer::resize(int x, int y, int w, int h){
-    if (this->overriddenFuncs->resize != NULL) {
-      this->overriddenFuncs->resize((fl_Timer) this,x,y,w,h);
-    }
-    else {
-      Fl_Timer::resize(x,y,w,h);
-    }
-  }
-
-  void Fl_DerivedTimer::resize_super(int x, int y, int w, int h){
-    Fl_Timer::resize(x,y,w,h);
-  }
-  void Fl_DerivedTimer::show(){
-    if (this->overriddenFuncs->show != NULL) {
-      this->overriddenFuncs->show((fl_Timer) this);
-    }
-    else {
-      Fl_Timer::show();
-    }
-  }
-  void Fl_DerivedTimer::show_super(){
-    Fl_Timer::show();
-  }
-
-  void Fl_DerivedTimer::hide(){
-    if (this->overriddenFuncs->hide != NULL) {
-      this->overriddenFuncs->hide((fl_Timer) this);
-    }
-    else {
-      Fl_Timer::hide();
-    }
-  }
-  void Fl_DerivedTimer::hide_super(){
-    Fl_Timer::hide();
-  }
-#endif
-  FL_EXPORT_C(fl_Group,Fl_Timer_parent)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->parent();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_parent)(fl_Timer adjuster,fl_Group grp){
-    (static_cast<Fl_Timer*>(adjuster))->parent((static_cast<Fl_Group*>(grp)));
-  }
-  FL_EXPORT_C(uchar,Fl_Timer_type)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->type();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_type)(fl_Timer adjuster,uchar t){
-    (static_cast<Fl_Timer*>(adjuster))->type(t);
-  }
-  FL_EXPORT_C(int,Fl_Timer_x)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->x();
-  }
-  FL_EXPORT_C(int,Fl_Timer_y)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->y();
-  }
-  FL_EXPORT_C(int,Fl_Timer_w)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->w();
-  }
-  FL_EXPORT_C(int,Fl_Timer_h)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->h();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_align)(fl_Timer adjuster,Fl_Align alignment){
-    (static_cast<Fl_Timer*>(adjuster))->align(alignment);
-  }
-  FL_EXPORT_C(Fl_Align,Fl_Timer_align)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->align();
-  }
-  FL_EXPORT_C(Fl_Boxtype,Fl_Timer_box)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->box();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_box)(fl_Timer adjuster,Fl_Boxtype new_box){
-    (static_cast<Fl_Timer*>(adjuster))->box(new_box);
-  }
-  FL_EXPORT_C(Fl_Color,Fl_Timer_color)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->color();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_color)(fl_Timer adjuster,Fl_Color bg){
-    (static_cast<Fl_Timer*>(adjuster))->color(bg);
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_color_with_bg_sel)(fl_Timer adjuster,Fl_Color bg,Fl_Color a){
-    (static_cast<Fl_Timer*>(adjuster))->color(bg,a);
-  }
-  FL_EXPORT_C(Fl_Color,Fl_Timer_selection_color)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->selection_color();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_selection_color)(fl_Timer adjuster,Fl_Color a){
-    (static_cast<Fl_Timer*>(adjuster))->selection_color(a);
-  }
-  FL_EXPORT_C(const char*,Fl_Timer_label)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->label();
-  }
-  FL_EXPORT_C(void,Fl_Timer_copy_label)(fl_Timer adjuster,const char* new_label){
-    (static_cast<Fl_Timer*>(adjuster))->copy_label(new_label);
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_label)(fl_Timer adjuster,const char* text){
-    (static_cast<Fl_Timer*>(adjuster))->label(text);
-  }
-  FL_EXPORT_C(Fl_Labeltype,Fl_Timer_labeltype)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->labeltype();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_labeltype)(fl_Timer adjuster,Fl_Labeltype a){
-    (static_cast<Fl_Timer*>(adjuster))->labeltype(a);
-  }
-  FL_EXPORT_C(Fl_Color,Fl_Timer_labelcolor)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->labelcolor();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_labelcolor)(fl_Timer adjuster,Fl_Color c){
-    (static_cast<Fl_Timer*>(adjuster))->labelcolor(c);
-  }
-  FL_EXPORT_C(Fl_Font,Fl_Timer_labelfont)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->labelfont();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_labelfont)(fl_Timer adjuster,Fl_Font c){
-    (static_cast<Fl_Timer*>(adjuster))->labelfont(c);
-  }
-  FL_EXPORT_C(Fl_Fontsize,Fl_Timer_labelsize)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->labelsize();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_labelsize)(fl_Timer adjuster,Fl_Fontsize pix){
-    (static_cast<Fl_Timer*>(adjuster))->labelsize(pix);
-  }
-  FL_EXPORT_C(fl_Image,Fl_Timer_image)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->image();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_image)(fl_Timer adjuster,fl_Image pix){
-    (static_cast<Fl_Timer*>(adjuster))->image((static_cast<Fl_Image*>(pix)));
-  }
-  FL_EXPORT_C(fl_Image,Fl_Timer_deimage)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->deimage();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_deimage)(fl_Timer adjuster,fl_Image pix){
-    (static_cast<Fl_Timer*>(adjuster))->deimage((static_cast<Fl_Image*>(pix)));
-  }
-  FL_EXPORT_C(const char*,Fl_Timer_tooltip)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->tooltip();
-  }
-  FL_EXPORT_C(void,Fl_Timer_copy_tooltip)(fl_Timer adjuster,const char* text){
-    (static_cast<Fl_Timer*>(adjuster))->copy_tooltip(text);
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_tooltip)(fl_Timer adjuster,const char* text){
-    (static_cast<Fl_Timer*>(adjuster))->tooltip(text);
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_callback_with_user_data)(fl_Timer adjuster,fl_Callback* cb,void* p){
-    Fl_Timer* castedTimer = (static_cast<Fl_Timer*>(adjuster));
-    new C_to_Fl_Callback(castedTimer, cb, p);
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_callback)(fl_Timer adjuster,fl_Callback* cb){
-    Fl_Timer* castedTimer = (static_cast<Fl_Timer*>(adjuster));
-    new C_to_Fl_Callback(castedTimer, cb);
-  }
-  FL_EXPORT_C(void*,Fl_Timer_user_data)(fl_Timer adjuster){
-    C_to_Fl_Callback* stored_cb = (static_cast<C_to_Fl_Callback*>((static_cast<Fl_Timer*>(adjuster))->user_data()));
-    if(stored_cb){
-      return stored_cb->get_user_data();
-    }
-    else {
-      return (static_cast<Fl_Timer*>(adjuster))->user_data();
-    }
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_user_data)(fl_Timer adjuster,void* v){
-    C_to_Fl_Callback* stored_cb = (static_cast<C_to_Fl_Callback*>((static_cast<Fl_Timer*>(adjuster))->user_data()));
-    if (stored_cb) {
-      stored_cb->set_user_data(v);
-      (static_cast<Fl_Timer*>(adjuster))->user_data(stored_cb);
-    }
-    else {
-      (static_cast<Fl_Timer*>(adjuster))->user_data(v);
-    }
-  }
-  FL_EXPORT_C(long,Fl_Timer_argument)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->argument();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_argument)(fl_Timer adjuster,long v){
-    (static_cast<Fl_Timer*>(adjuster))->argument(v);
-  }
-  FL_EXPORT_C(Fl_When,Fl_Timer_when)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->when();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_when)(fl_Timer adjuster,uchar i){
-    (static_cast<Fl_Timer*>(adjuster))->when(i);
-  }
-  FL_EXPORT_C(unsigned int,Fl_Timer_visible)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->visible();
-  }
-  FL_EXPORT_C(int,Fl_Timer_visible_r)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->visible_r();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_visible)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->visible();
-  }
-  FL_EXPORT_C(void,Fl_Timer_clear_visible)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->clear_visible();
-  }
-  FL_EXPORT_C(unsigned int,Fl_Timer_active)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->active();
-  }
-  FL_EXPORT_C(int,Fl_Timer_active_r)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->active_r();
-  }
-  FL_EXPORT_C(void,Fl_Timer_activate)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->activate();
-  }
-  FL_EXPORT_C(void,Fl_Timer_deactivate)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->deactivate();
-  }
-  FL_EXPORT_C(unsigned int,Fl_Timer_output)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->output();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_output)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->output();
-  }
-  FL_EXPORT_C(void,Fl_Timer_clear_output)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->clear_output();
-  }
-  FL_EXPORT_C(unsigned int,Fl_Timer_takesevents)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->takesevents();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_changed)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->changed();
-  }
-  FL_EXPORT_C(void,Fl_Timer_clear_changed)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->clear_changed();
-  }
-  FL_EXPORT_C(int,Fl_Timer_take_focus)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->take_focus();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_visible_focus)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->set_visible_focus();
-  }
-  FL_EXPORT_C(void,Fl_Timer_clear_visible_focus)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->clear_visible_focus();
-  }
-  FL_EXPORT_C(void,Fl_Timer_modify_visible_focus)(fl_Timer adjuster,int v){
-    (static_cast<Fl_Timer*>(adjuster))->visible_focus(v);
-  }
-  FL_EXPORT_C(unsigned int,Fl_Timer_visible_focus)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->visible_focus();
-  }
-  FL_EXPORT_C(int,Fl_Timer_contains)(fl_Timer adjuster,fl_Widget w){
-    return (static_cast<Fl_Timer*>(adjuster))->contains((static_cast<Fl_Widget*>(w)));
-  }
-  FL_EXPORT_C(int,Fl_Timer_inside)(fl_Timer adjuster,fl_Widget w){
-    return (static_cast<Fl_Timer*>(adjuster))->inside((static_cast<Fl_Widget*>(w)));
-  }
-  FL_EXPORT_C(void,Fl_Timer_redraw)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->redraw();
-  }
-  FL_EXPORT_C(void,Fl_Timer_redraw_label)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->redraw_label();
-  }
-  FL_EXPORT_C(uchar,Fl_Timer_damage)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->damage();
-  }
-  FL_EXPORT_C(void,Fl_Timer_clear_damage_with_bitmask)(fl_Timer adjuster,uchar c){
-    (static_cast<Fl_Timer*>(adjuster))->clear_damage(c);
-  }
-  FL_EXPORT_C(void,Fl_Timer_clear_damage)(fl_Timer adjuster){
-    (static_cast<Fl_Timer*>(adjuster))->clear_damage();
-  }
-  FL_EXPORT_C(void,Fl_Timer_damage_with_text)(fl_Timer adjuster,uchar c){
-    (static_cast<Fl_Timer*>(adjuster))->damage(c);
-  }
-  FL_EXPORT_C(void,Fl_Timer_damage_inside_widget)(fl_Timer adjuster,uchar c,int x,int y,int w,int h){
-    (static_cast<Fl_Timer*>(adjuster))->damage(c,x,y,w,h);
-  }
-  FL_EXPORT_C(void,Fl_Timer_draw_label_with_xywh_alignment)(fl_Timer adjuster,int x,int y,int w,int h,Fl_Align alignment){
-    (static_cast<Fl_Timer*>(adjuster))->draw_label(x,y,w,h,alignment);
-  }
-  FL_EXPORT_C(void,Fl_Timer_measure_label)(fl_Timer adjuster,int* ww,int* hh){
-    (static_cast<Fl_Timer*>(adjuster))->measure_label(*ww,*hh);
-  }
-  FL_EXPORT_C(fl_Window,Fl_Timer_window)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->window();
-  }
-  FL_EXPORT_C(fl_Window,Fl_Timer_top_window)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->top_window();
-  }
-  FL_EXPORT_C(fl_Window,Fl_Timer_top_window_offset)(fl_Timer adjuster,int* xoff,int* yoff){
-    return (fl_Window)(static_cast<Fl_Timer*>(adjuster))->top_window_offset(*xoff,*yoff);
-  }
-  FL_EXPORT_C(fl_Gl_Window,Fl_Timer_as_gl_window)(fl_Timer adjuster){
-    return (static_cast<Fl_Timer*>(adjuster))->as_gl_window();
-  }
-  FL_EXPORT_C(fl_Timer,Fl_Value_Timer_New)(int x,int y,int w,int h,const char* label){
-    Fl_Timer* adjuster = new Fl_Timer(FL_VALUE_TIMER,x,y,w,h,label);
-    return (fl_Timer) adjuster;
-  }
-  FL_EXPORT_C(fl_Timer,Fl_Hidden_Timer_New)(int x,int y,int w,int h,const char* label){
-    Fl_Timer* adjuster = new Fl_Timer(FL_HIDDEN_TIMER,x,y,w,h,label);
-    return (fl_Timer) adjuster;
-  }
-  FL_EXPORT_C(void,Fl_Timer_Destroy)(fl_Timer timer){
-    delete (static_cast<Fl_Timer*>(timer));
-  }
-  FL_EXPORT_C(char,Fl_Timer_direction)(fl_Timer timer){
-    return (static_cast<Fl_Timer*>(timer))->direction();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_direction)(fl_Timer timer,char d){
-    (static_cast<Fl_Timer*>(timer))->direction(d);
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_value)(fl_Timer timer, double value) {
-    (static_cast<Fl_Timer*>(timer)->value(value));
-  }
-  FL_EXPORT_C(double, Fl_Timer_value)(fl_Timer timer){
-    return (static_cast<Fl_Timer*>(timer)->value());
-  }
-  FL_EXPORT_C(char,Fl_Timer_suspended)(fl_Timer timer){
-    return (static_cast<Fl_Timer*>(timer))->suspended();
-  }
-  FL_EXPORT_C(void,Fl_Timer_set_suspended)(fl_Timer timer,char s){
-    (static_cast<Fl_Timer*>(timer))->suspended(s);
-  }
-  FL_EXPORT_C(fl_Timer,    Fl_Timer_New_WithLabel)(int X, int Y, int W, int H, const char* label){
-    fl_Widget_Virtual_Funcs* fs = Fl_Widget_default_virtual_funcs();
-    Fl_DerivedTimer* w = new Fl_DerivedTimer(FL_NORMAL_TIMER,X,Y,W,H,label,fs);
-    return (fl_Timer)w;
-  }
-  FL_EXPORT_C(fl_Timer,    Fl_OverriddenTimer_New_WithLabel)(int X, int Y, int W, int H, const char* label, fl_Widget_Virtual_Funcs* fs){
-    Fl_DerivedTimer* w = new Fl_DerivedTimer(FL_NORMAL_TIMER,X,Y,W,H,label,fs);
-    return (fl_Timer)w;
-  }
-  FL_EXPORT_C(void, Fl_Timer_draw)(fl_Timer o){
-    (static_cast<Fl_DerivedTimer*>(o))->draw();
-  }
-  FL_EXPORT_C(void, Fl_Timer_draw_super)(fl_Timer o){
-    (static_cast<Fl_DerivedTimer*>(o))->draw_super();
-  }
-  FL_EXPORT_C(int, Fl_Timer_handle)(fl_Timer o, int event){
-    return (static_cast<Fl_DerivedTimer*>(o))->handle(event);
-  }
-  FL_EXPORT_C(int, Fl_Timer_handle_super)(fl_Timer o, int event){
-    return (static_cast<Fl_DerivedTimer*>(o))->handle_super(event);
-  }
-  FL_EXPORT_C(void, Fl_Timer_resize)(fl_Timer o, int x, int y, int w, int h){
-    (static_cast<Fl_DerivedTimer*>(o))->resize(x,y,w,h);
-  }
-  FL_EXPORT_C(void, Fl_Timer_resize_super)(fl_Timer o, int x, int y, int w, int h){
-    (static_cast<Fl_DerivedTimer*>(o))->resize_super(x,y,w,h);
-  }
-  FL_EXPORT_C(void, Fl_Timer_show)(fl_Timer o){
-    (static_cast<Fl_DerivedTimer*>(o))->show();
-  }
-  FL_EXPORT_C(void, Fl_Timer_show_super)(fl_Timer o){
-    (static_cast<Fl_DerivedTimer*>(o))->show_super();
-  }
-  FL_EXPORT_C(void, Fl_Timer_hide)(fl_Timer o){
-    (static_cast<Fl_DerivedTimer*>(o))->hide();
-  }
-  FL_EXPORT_C(void, Fl_Timer_hide_super)(fl_Timer o){
-    (static_cast<Fl_DerivedTimer*>(o))->hide_super();
-  }
-#ifdef __cplusplus
-}
-#endif
diff --git a/c-src/Fl_TimerC.h b/c-src/Fl_TimerC.h
deleted file mode 100644
--- a/c-src/Fl_TimerC.h
+++ /dev/null
@@ -1,147 +0,0 @@
-#ifndef __FL_TIMER_C__
-#define __FL_TIMER_C__
-#ifdef __cplusplus
-// always include the FL/*.H headers before local headers
-// Fl_Widget is included transitively and needed for
-// the callback mechanism included below to work.
-#include "FL/Fl.H"
-#include "FL/Fl_Timer.H"
-#include "Fl_CallbackC.h"
-#include "Fl_WidgetC.h"
-EXPORT {
-  class Fl_DerivedTimer : public Fl_Timer {
-    fl_Widget_Virtual_Funcs* overriddenFuncs;
-    void* other_data;
-  public:
-    virtual void draw();
-    void draw_super();
-    virtual int handle(int event);
-    int handle_super(int event);
-    virtual void resize(int x, int y, int w, int h);
-    void resize_super(int x, int y, int w, int h);
-    virtual void show();
-    void show_super();
-    virtual void hide();
-    void hide_super();
-    Fl_DerivedTimer(uchar t, int X, int Y, int W, int H, const char *l, fl_Widget_Virtual_Funcs* funcs);
-    ~Fl_DerivedTimer();
-  };
-#endif
-  /* Inherited from Fl_Widget */
-  FL_EXPORT_C(int ,         Fl_Timer_handle )(fl_Timer timer,int event);
-  FL_EXPORT_C(void,         Fl_Timer_resize )(fl_Timer timer,int x, int y, int w, int h);
-  FL_EXPORT_C(void,         Fl_Timer_show )(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_hide )(fl_Timer timer);
-  FL_EXPORT_C(fl_Window,    Fl_Timer_as_window )(fl_Timer timer);
-  FL_EXPORT_C(fl_Gl_Window, Fl_Timer_as_gl_window)(fl_Timer timer);
-  FL_EXPORT_C(fl_Group,     Fl_Timer_parent)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_parent)(fl_Timer timer, fl_Group grp);
-  FL_EXPORT_C(uchar,        Fl_Timer_type)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_type)(fl_Timer timer, uchar t);
-
-  FL_EXPORT_C(int,          Fl_Timer_x)(fl_Timer timer);
-  FL_EXPORT_C(int,          Fl_Timer_y)(fl_Timer timer);
-  FL_EXPORT_C(int,          Fl_Timer_w)(fl_Timer timer);
-  FL_EXPORT_C(int,          Fl_Timer_h)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_align)(fl_Timer timer, Fl_Align alignment);
-  FL_EXPORT_C(Fl_Align,     Fl_Timer_align)(fl_Timer timer);
-  FL_EXPORT_C(Fl_Boxtype,   Fl_Timer_box)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_box)(fl_Timer timer, Fl_Boxtype new_box);
-  FL_EXPORT_C(Fl_Color,     Fl_Timer_color)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_color)(fl_Timer timer, Fl_Color bg);
-  FL_EXPORT_C(void,         Fl_Timer_set_color_with_bg_sel)(fl_Timer timer,Fl_Color bg, Fl_Color a);
-  FL_EXPORT_C(Fl_Color,     Fl_Timer_selection_color)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_selection_color)(fl_Timer timer, Fl_Color a);
-  FL_EXPORT_C(const char*,  Fl_Timer_label)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_copy_label)(fl_Timer timer, const char* new_label);
-  FL_EXPORT_C(void,         Fl_Timer_set_label)(fl_Timer timer, const char* text);
-  FL_EXPORT_C(Fl_Labeltype, Fl_Timer_labeltype)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_labeltype)(fl_Timer timer, Fl_Labeltype a);
-  FL_EXPORT_C(Fl_Color,     Fl_Timer_labelcolor)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_labelcolor)(fl_Timer timer, Fl_Color c);
-  FL_EXPORT_C(Fl_Font,      Fl_Timer_labelfont)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_labelfont)(fl_Timer timer, Fl_Font c);
-  FL_EXPORT_C(Fl_Fontsize,  Fl_Timer_labelsize)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_labelsize)(fl_Timer timer, Fl_Fontsize pix);
-  FL_EXPORT_C(fl_Image,     Fl_Timer_image)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_image)(fl_Timer timer, fl_Image pix);
-  FL_EXPORT_C(fl_Image,     Fl_Timer_deimage)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_deimage)(fl_Timer timer, fl_Image pix);
-  FL_EXPORT_C(const char*,  Fl_Timer_tooltip)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_copy_tooltip)(fl_Timer timer, const char* text);
-  FL_EXPORT_C(void,         Fl_Timer_set_tooltip)(fl_Timer timer, const char* text);
-  FL_EXPORT_C(void,         Fl_Timer_set_callback_with_user_data)(fl_Timer timer, fl_Callback* cb, void* p);
-  FL_EXPORT_C(void,         Fl_Timer_set_callback)(fl_Timer timer, fl_Callback* cb);
-  FL_EXPORT_C(void*,        Fl_Timer_user_data)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_user_data)(fl_Timer timer, void* v);
-  FL_EXPORT_C(long,         Fl_Timer_argument)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_argument)(fl_Timer timer, long v);
-  FL_EXPORT_C(Fl_When,      Fl_Timer_when)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_when)(fl_Timer timer, uchar i);
-  FL_EXPORT_C(unsigned int, Fl_Timer_visible)(fl_Timer timer);
-  FL_EXPORT_C(int,          Fl_Timer_visible_r)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_visible)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_clear_visible)(fl_Timer timer);
-  FL_EXPORT_C(unsigned int, Fl_Timer_active)(fl_Timer timer);
-  FL_EXPORT_C(int,          Fl_Timer_active_r)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_activate)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_deactivate)(fl_Timer timer);
-  FL_EXPORT_C(unsigned int, Fl_Timer_output)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_output)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_clear_output)(fl_Timer timer);
-  FL_EXPORT_C(unsigned int, Fl_Timer_takesevents)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_changed)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_clear_changed)(fl_Timer timer);
-  FL_EXPORT_C(int,          Fl_Timer_take_focus)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_set_visible_focus)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_clear_visible_focus)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_modify_visible_focus)(fl_Timer timer, int v);
-  FL_EXPORT_C(unsigned int, Fl_Timer_visible_focus)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_do_callback)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_do_callback_with_widget_and_user_data)(fl_Timer timer, fl_Widget w, long arg);
-  FL_EXPORT_C(void,         Fl_Timer_do_callback_with_widget_and_default_user_data)(fl_Timer timer, fl_Widget w);
-  FL_EXPORT_C(int,          Fl_Timer_contains)(fl_Timer timer, fl_Widget w);
-  FL_EXPORT_C(int,          Fl_Timer_inside)(fl_Timer timer, fl_Widget w);
-  FL_EXPORT_C(void,         Fl_Timer_redraw)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_redraw_label)(fl_Timer timer);
-  FL_EXPORT_C(uchar,        Fl_Timer_damage)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_clear_damage_with_bitmask)(fl_Timer timer, uchar c);
-  FL_EXPORT_C(void,         Fl_Timer_clear_damage)(fl_Timer timer);
-  FL_EXPORT_C(void,         Fl_Timer_damage_with_text)(fl_Timer timer, uchar c);
-  FL_EXPORT_C(void,         Fl_Timer_damage_inside_widget)(fl_Timer timer, uchar c, int x , int y , int w, int h);
-  FL_EXPORT_C(void,         Fl_Timer_draw_label_with_xywh_alignment)(fl_Timer timer, int x , int y , int w, int h, Fl_Align alignment);
-  FL_EXPORT_C(void,         Fl_Timer_measure_label)(fl_Timer timer, int* ww , int* hh);
-  FL_EXPORT_C(fl_Window,    Fl_Timer_window)(fl_Timer timer);
-  FL_EXPORT_C(fl_Window,    Fl_Timer_top_window)(fl_Timer timer);
-  FL_EXPORT_C(fl_Window ,   Fl_Timer_top_window_offset)(fl_Timer timer, int* xoff, int* yoff);
-  FL_EXPORT_C(fl_Group,     Fl_Timer_as_group)(fl_Timer timer);
-  FL_EXPORT_C(fl_Gl_Window, Fl_Timer_as_gl_window)(fl_Timer timer);
-
-  FL_EXPORT_C(fl_Timer, Fl_Timer_New)(int x, int y, int w, int h, const char* l);
-  FL_EXPORT_C(fl_Timer, Fl_Value_Timer_New)(int x, int y, int w, int h, const char* l);
-  FL_EXPORT_C(fl_Timer, Fl_Hidden_Timer_New)(int x, int y, int w, int h, const char* l);
-
-  FL_EXPORT_C(void, Fl_Timer_Destroy)(fl_Timer timer);
-
-  FL_EXPORT_C(char,      Fl_Timer_direction)(fl_Timer timer);
-  FL_EXPORT_C(void,      Fl_Timer_set_direction)(fl_Timer timer, char d);
-  FL_EXPORT_C(double,    Fl_Timer_value)(fl_Timer timer);
-  FL_EXPORT_C(void,      Fl_Timer_set_value)(fl_Timer timer, double value);
-  FL_EXPORT_C(char,      Fl_Timer_suspended)(fl_Timer timer);
-  FL_EXPORT_C(void,      Fl_Timer_set_suspended)(fl_Timer timer, char s);
-  FL_EXPORT_C(fl_Timer,    Fl_OverriddenTimer_New)(int X, int Y, int W, int H,fl_Widget_Virtual_Funcs* fs);
-  FL_EXPORT_C(fl_Timer,    Fl_OverriddenTimer_New_WithLabel)(int X, int Y, int W, int H, const char* label, fl_Widget_Virtual_Funcs* fs);
-  FL_EXPORT_C(void, Fl_Timer_draw)(fl_Timer o);
-  FL_EXPORT_C(void, Fl_Timer_draw_super)(fl_Timer o);
-  FL_EXPORT_C(int, Fl_Timer_handle)(fl_Timer o, int event);
-  FL_EXPORT_C(int, Fl_Timer_handle_super)(fl_Timer o, int event);
-  FL_EXPORT_C(void, Fl_Timer_resize)(fl_Timer o, int x, int y, int w, int h);
-  FL_EXPORT_C(void, Fl_Timer_resize_super)(fl_Timer o, int x, int y, int w, int h);
-  FL_EXPORT_C(void, Fl_Timer_show)(fl_Timer o);
-  FL_EXPORT_C(void, Fl_Timer_show_super)(fl_Timer o);
-  FL_EXPORT_C(void, Fl_Timer_hide)(fl_Timer o);
-  FL_EXPORT_C(void, Fl_Timer_hide_super)(fl_Timer o);
-#ifdef __cplusplus
-}
-#endif
-#endif /*#ifndef __FL_TIMER_C__*/
diff --git a/c-src/Makefile.in b/c-src/Makefile.in
--- a/c-src/Makefile.in
+++ b/c-src/Makefile.in
@@ -6,7 +6,6 @@
 CPPFILES= \
 	Fl_Menu_ButtonC.cpp \
 	Fl_PositionerC.cpp \
-	Fl_TimerC.cpp \
 	Fl_Value_OutputC.cpp \
 	Fl_Value_SliderC.cpp \
 	Fl_ScrollbarC.cpp \
diff --git a/fltkhs.cabal b/fltkhs.cabal
--- a/fltkhs.cabal
+++ b/fltkhs.cabal
@@ -1,8 +1,7 @@
 name : fltkhs
-version : 0.5.2.4
+version : 0.5.2.5
 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.
+description: Low level bindings for the FLTK GUI toolkit. For installation and quick start instruction please scroll all the way down to the README.
 license : MIT
 license-file : LICENSE
 tested-with: GHC >=7.8.1
@@ -76,7 +75,6 @@
                    Graphics.UI.FLTK.LowLevel.ValueSlider
                    Graphics.UI.FLTK.LowLevel.ValueInput
                    Graphics.UI.FLTK.LowLevel.ValueOutput
-                   Graphics.UI.FLTK.LowLevel.Timer
                    Graphics.UI.FLTK.LowLevel.Progress
                    Graphics.UI.FLTK.LowLevel.Positioner
                    Graphics.UI.FLTK.LowLevel.Input
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
@@ -128,7 +128,6 @@
          module Graphics.UI.FLTK.LowLevel.Tabs,
          module Graphics.UI.FLTK.LowLevel.Table,
          module Graphics.UI.FLTK.LowLevel.TableRow,
-         module Graphics.UI.FLTK.LowLevel.Timer,
          module Graphics.UI.FLTK.LowLevel.ToggleButton,
          module Graphics.UI.FLTK.LowLevel.Tree,
          module Graphics.UI.FLTK.LowLevel.TreeItem,
@@ -215,7 +214,6 @@
 import Graphics.UI.FLTK.LowLevel.ValueSlider
 import Graphics.UI.FLTK.LowLevel.ValueInput
 import Graphics.UI.FLTK.LowLevel.ValueOutput
-import Graphics.UI.FLTK.LowLevel.Timer
 import Graphics.UI.FLTK.LowLevel.Progress
 import Graphics.UI.FLTK.LowLevel.Positioner
 import Graphics.UI.FLTK.LowLevel.Input
@@ -264,7 +262,7 @@
 -- $Motivation
 -- This library aims to make it easy for users to build native apps that work portably across platforms.
 --
--- The original author is also very interested the renewed interested in user
+-- I'm also very interested the renewed interested in user
 -- interfaces in the programming community, whether the various kinds of
 -- functional reactive programming, meta-object protocol UI's, or something like
 -- React.js.
@@ -279,10 +277,10 @@
 -- security issues.
 --
 -- == Why FLTK?
--- - The original author chose FLTK because it was small enough that one person could bind the whole thing in an initial
+-- - I chose FLTK because it was small enough that one person could bind the whole thing in an initial
 -- pass. Larger toolkits like QT, although way slicker, would require many man-years of effort.
 -- - FLTK is quite featureful
--- - FLTK is mature and maintained, the project is about 20 years old and author has had good experiences with the community
+-- - FLTK is mature and maintained, the project is about 20 years old and I have had good experiences with the community
 -- - FLTK comes with a simple but quite useful GUI builder, <https://en.wikipedia.org/wiki/FLUID Fluid> which is now able to
 --   generate Haskell code. See the `Fluid Support` section for more details.
 --
@@ -290,7 +288,7 @@
 -- These are all great projects and produce really nice UI's, but they all fail
 -- at least one of criterion listed under the __Goals__ section below.
 --
--- To the author's knowledge, as of the first quarter of 2016, no other package
+-- To my knowledge, as of the second quarter of 2017, no other package
 -- in the Haskell ecosystem meets all those constraints.
 --
 
@@ -322,7 +320,7 @@
 -- the 'fltkhs-fluidtohs' utility to automatically convert any Fluid in 'src'
 -- directory into a Haskell module of the same name during the preprocess step.
 -- This means using Fluid in a FLTKHS project is as simple as creating a Fluid
--- interface and running 'cabal build' or 'cabal install'.
+-- interface and running 'stack build --flag fltkhs:bundled' or 'stack install --flag fltkhs:bundled'.
 --
 -- Additionally the <https://github.com/deech/fltkhs-fluid-demos fltkhs-fluid-demos> package
 -- comes with a number of demos that show off how Fluid integrates with FLTKS.
@@ -346,7 +344,7 @@
 -- "theme file" that applies uniformly to all widgets in the app.
 --
 -- == Compile Times
--- Currently a dense app (~ 160-180 widgets crammed into the same window) takes
+-- Currently a dense app with ~ 160-180 widgets crammed into the same window takes
 -- 9-12 seconds to compile with GHC 7.10.3 on a 32GB quad-core machine.
 -- The good news is that this is a <https://ghc.haskell.org/trac/ghc/ticket/12506 known issue>.
 --
@@ -947,21 +945,17 @@
 
 -- $GettingStarted
 --
--- It is assumed that by this point the user has successfully installed this
--- library and demos in <http://github.com/deech/fltkhs-demos fltkhs-demos> (see
--- above).
+-- By this point, I assume that you have successfully installed <https://github.com/deech/fltkhs-hello-world hello world>
+-- (see above) or one of the <https://github.com/deech/fltkhs-demos demo> <https://github.com/deech/fltkhs-fluid-demos packages>.
 --
 --
 -- = Quick Start
--- The quickest way to get started is to the download the
--- <http://github.com/deech/fltkhs-hello-world FLTKHS project skeleton>. It is a
--- simple `hello-world` program that shows the basics of widget creation and
--- callbacks. The project's Cabal file comes pre-configured with the options
--- necessary to produce a statically-linked executable so a simple 'cabal
--- configure && cabal build' should result in an 'fltkhs-hello-world' executable
--- in the 'dist' directory.
+-- The quickest way to get started is to look at the source for the
+-- <http://github.com/deech/fltkhs-hello-world FLTKHS project skeleton>. Though it is a
+-- simple app it shows the basics of widget creation and
+-- callbacks.
 --
--- Other demos that ship with this package show more complicated usage of the API.
+-- Other <https://github.com/deech/fltkhs-demos demo> <https://github.com/deech/fltkhs-fluid-demos packages> show more complicated usage of the API.
 --
 -- Since the API is a low-level binding, code using it takes on the imperative
 -- style of the underlying toolkit. Fortunately it should look pretty familiar
@@ -974,7 +968,7 @@
 -- = Guide to the Haddock Docs
 --
 -- Convenient access to the underlying C++ is achieved using typeclasses and
--- type-level programming to emulate classes and subclasses. This approach makes
+-- type-level programming to emulate OO classes and multiple dispatch. This approach makes
 -- Haddock very unhappy and the generated documentation is frequently unhelpful.
 -- For instance, newcomers to this library are urged not to look at
 -- "Graphics.UI.FLTK.LowLevel.Dispatch" or
@@ -1017,7 +1011,7 @@
 -- Unfortunately to see this more helpful type signature the poor reader has to
 -- navigate to the corresponding widget's module, find the __Functions__ header
 -- and scroll down to the desired function. Haddock, unfortunately, does not
--- support anchors that link to a named point in the page. The author is /very/
+-- support anchors that link to a named point in the page. I'm /very/
 -- open to ideas on how to make this easier.
 --
 -- Carrying on the previous example from the __Widget Creation__ section, the
@@ -1089,7 +1083,8 @@
 -- widget construction time that give Haskell complete control on <https://hackage.haskell.org/package/fltkhs-0.5.1.3/docs/Graphics-UI-FLTK-LowLevel-Widget.html#v:widgetCustom drawing>,
 -- <https://hackage.haskell.org/package/fltkhs-0.5.1.3/docs/Graphics-UI-FLTK-LowLevel-Widget.html#t:CustomWidgetFuncs handling, resizing and other key functions>. This means that the Haskell user has
 -- complete control of look-and-feel and the event loop. The <https://github.com/deech/fltkhs-demos/blob/master/src/Examples/table-as-container.hs#L105 table> demos are
--- an example of drawing in Haskell. An example of taking over the event loop is an FLTKHS <https://github.com/deech/fltkhs-reflex-host proof-of-concept> that <https://github.com/deech/fltkhs-reflex-host/blob/master/src/reflex-host.hs#L33 overrides> the FLTKHS event loop with the <https://hackage.haskell.org/package/reflex Reflex FRP> allowing
+-- an example of drawing in Haskell. An example of taking over the event loop is an FLTKHS <https://github.com/deech/fltkhs-reflex-host proof-of-concept> that <https://github.com/deech/fltkhs-reflex-host/blob/master/src/reflex-host.hs#L33 overrides>
+-- the FLTKHS event loop with the <https://hackage.haskell.org/package/reflex Reflex FRP> allowing
 -- native functional reactive programming. The sky is the limit!
 --
 -- When providing custom methods the object constructor is no longer
@@ -1140,7 +1135,6 @@
 -- function name suffixed with \"Super\". For instance, the user can provide a
 -- custom implementation of /handle/ on "Graphics.UI.FLTK.LowLevel.Window" via
 -- the constructor and every call to /handle/ invokes that implementation, but
-
 -- the user can also call /handleSuper/ to get at the default C++
 -- implementation. This comes in handy when the custom function is just setting
 -- up variables or logging and wants underlying implementation to take over at
@@ -1148,11 +1142,11 @@
 --
 -- __Warning__: since calls to the default implementation of the function,
 -- /handleSuper/, for example, are available to the widget they are
--- automatically available to all subclasses of the widget. The author
--- acknowledges this is a confusing aspect of the library's design but hopes the
+-- automatically available to all subclasses of the widget. I
+-- acknowledge this is a confusing aspect of the library's design but hopes the
 -- benefit of being able to get at the default implementation out-weighs the
--- trap the user might fall into. If this becomes a pervasive problem the author
--- is open to removing this functionality.
+-- trap the user might fall into. If this becomes a pervasive problem I'm
+-- open to removing this functionality.
 --
 
 -- $Compilation
@@ -1167,7 +1161,7 @@
 -- longer to compile. To further emphasize, there does not appear to be any
 -- 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
+-- To preserve the user's and my sanity a flag `fastCompile` has been
 -- introduced to the <https://github.com/deech/fltkhs-demos fltkhs-demos> and
 -- to the <https://github.com/deech/fltkhs-fluid-demos fltkhs-fluid-demos>.
 -- This flag which tells the compiler to skip the specialising step when
@@ -1179,7 +1173,7 @@
 -- Stack to ignore it during the `build` step:
 --
 -- @
--- > stack build --flag fltkhs-demos:-fastCompile
+-- > stack build --flag fltkhs:bundled --flag fltkhs-demos:-fastCompile
 -- @
 --
 -- In the <https://github.com/deech/fltkhs-hello-world fltkhs> and the
@@ -1189,20 +1183,21 @@
 -- Stack to enable it during the `configure` step:
 --
 -- @
--- > stack build --flag fltkhs-hello-world:fastCompile
+-- > stack build --flag fltkhs:bundled --flag fltkhs-hello-world:fastCompile
 -- @
 --
 -- =File Layout
 -- @
 -- Root
---   - c-src            -- The C bindings
---   - c-examples       -- demos written using the C bindings (not installed)
+--   - c-src                 -- The C bindings
+--   - c-examples            -- demos written using the C bindings (not installed)
+--   - fltk-<version>.tar.gz -- The bundled FLTK library
 --   - src
---     - TestPrograms   -- Haskell test programs
---     - Fluid          -- The Fluid file to Haskell conversion utility
+--     - TestPrograms        -- Haskell test programs
+--     - Fluid               -- The Fluid file to Haskell conversion utility
 --     - Graphics
 --       - UI
 --         - FLTK
---           - LowLevel -- Haskell bindings
---   - scripts          -- various helper scripts (probably not interesting to anyone but the original author)
+--           - LowLevel      -- Haskell bindings
+--   - scripts               -- various helper scripts (probably not interesting to anyone but myself)
 -- @
diff --git a/src/Graphics/UI/FLTK/LowLevel/Fl_Types.chs b/src/Graphics/UI/FLTK/LowLevel/Fl_Types.chs
--- a/src/Graphics/UI/FLTK/LowLevel/Fl_Types.chs
+++ b/src/Graphics/UI/FLTK/LowLevel/Fl_Types.chs
@@ -445,12 +445,10 @@
 
 isNull :: Ref a -> IO Bool
 isNull (Ref fptr) =
-  withForeignPtr fptr $
+  withForeignPtr fptr
    (\ptrToRefPtr -> do
         refPtr <- peek ptrToRefPtr
-        if (refPtr == nullPtr)
-          then return True
-          else return False
+        return (refPtr == nullPtr)
    )
 
 unsafeRefToPtr :: Ref a -> IO (Ptr ())
diff --git a/src/Graphics/UI/FLTK/LowLevel/Timer.chs b/src/Graphics/UI/FLTK/LowLevel/Timer.chs
deleted file mode 100644
--- a/src/Graphics/UI/FLTK/LowLevel/Timer.chs
+++ /dev/null
@@ -1,170 +0,0 @@
-{-# LANGUAGE CPP, ExistentialQuantification, TypeSynonymInstances, FlexibleInstances, MultiParamTypeClasses, FlexibleContexts, ScopedTypeVariables #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-module Graphics.UI.FLTK.LowLevel.Timer
-    (
-     -- * Constructor
-     timerNew,
-     timerCustom,
-     -- * Hierarchy
-     --
-     -- $hierarchy
-
-     valueTimerNew,
-     hiddenTimerNew
-     -- * Functions
-     --
-     -- $functions
-    )
-where
-#include "Fl_ExportMacros.h"
-#include "Fl_Types.h"
-#include "Fl_TimerC.h"
-import C2HS hiding (cFromEnum, cFromBool, cToBool,cToEnum)
-import Graphics.UI.FLTK.LowLevel.Widget
-import Graphics.UI.FLTK.LowLevel.Fl_Enumerations
-import Graphics.UI.FLTK.LowLevel.Fl_Types
-import Graphics.UI.FLTK.LowLevel.Utils
-import Graphics.UI.FLTK.LowLevel.Hierarchy
-import Graphics.UI.FLTK.LowLevel.Dispatch
-import qualified Data.Text as T
-
-{# fun Fl_OverriddenTimer_New_WithLabel as overriddenWidgetNewWithLabel' { `Int',`Int',`Int',`Int', unsafeToCString `T.Text', id `Ptr ()'} -> `Ptr ()' id #}
-{# fun Fl_OverriddenTimer_New as overriddenWidgetNew' { `Int',`Int',`Int',`Int', id `Ptr ()'} -> `Ptr ()' id #}
-timerCustom ::
-       Rectangle                            -- ^ The bounds of this Timer
-    -> T.Text                               -- ^ The Timer label
-    -> Maybe (Ref Timer -> IO ())           -- ^ Optional custom drawing function
-    -> Maybe (CustomWidgetFuncs Timer)      -- ^ Optional custom widget functions
-    -> IO (Ref Timer)
-timerCustom rectangle l' draw' funcs' =
-  widgetMaker
-    rectangle
-    (Just l')
-    draw'
-    funcs'
-    overriddenWidgetNew'
-    overriddenWidgetNewWithLabel'
-
-
-{# fun Fl_Timer_New as timerNewWithLabel' { `Int',`Int',`Int',`Int', unsafeToCString `T.Text'} -> `Ptr ()' id #}
-timerNew :: Rectangle -> T.Text -> IO (Ref Timer)
-timerNew rectangle l'=
-    let (x_pos, y_pos, width, height) = fromRectangle rectangle
-    in timerNewWithLabel' x_pos y_pos width height l' >>= toRef
-{# fun Fl_Value_Timer_New as valueTimerNewWithLabel' { `Int',`Int',`Int',`Int', unsafeToCString `T.Text'} -> `Ptr ()' id #}
-valueTimerNew :: Rectangle -> T.Text -> IO (Ref ValueTimer)
-valueTimerNew rectangle l'=
-    let (x_pos, y_pos, width, height) = fromRectangle rectangle
-    in
-    valueTimerNewWithLabel' x_pos y_pos width height l' >>= toRef
-
-{# fun Fl_Hidden_Timer_New as hiddenTimerNewWithLabel' { `Int',`Int',`Int',`Int', unsafeToCString `T.Text'} -> `Ptr ()' id #}
-hiddenTimerNew :: Rectangle -> T.Text -> IO (Ref HiddenTimer)
-hiddenTimerNew rectangle l'=
-    let (x_pos, y_pos, width, height) = fromRectangle rectangle
-    in
-    hiddenTimerNewWithLabel' x_pos y_pos width height l' >>= toRef
-
-{# fun Fl_Timer_Destroy as timerDestroy' { id `Ptr ()' } -> `()' supressWarningAboutRes #}
-instance (impl ~ (IO ())) => Op (Destroy ()) Timer orig impl where
-  runOp _ _ win = swapRef win $ \winPtr -> do
-                                        timerDestroy' winPtr
-                                        return nullPtr
-{# fun Fl_Timer_direction as direction' { id `Ptr ()' } -> `CChar' id #}
-instance (impl ~ ( IO (CountDirection))) => Op (GetDirection ()) Timer orig impl where
-  runOp _ _ adjuster = withRef adjuster $ \adjusterPtr -> direction' adjusterPtr >>= return . ccharToCountDirection
-{# fun Fl_Timer_set_direction as setDirection' { id `Ptr ()',id `CChar' } -> `()' #}
-instance (impl ~ (CountDirection ->  IO ())) => Op (SetDirection ()) Timer orig impl where
-  runOp _ _ adjuster d = withRef adjuster $ \adjusterPtr -> setDirection' adjusterPtr (countDirectionToCChar d)
-{# fun Fl_Timer_value as value' { id `Ptr ()' } -> `Double' #}
-instance (impl ~ ( IO (Double))) => Op (GetValue ()) Timer orig impl where
-  runOp _ _ adjuster = withRef adjuster $ \adjusterPtr -> value' adjusterPtr
-{# fun Fl_Timer_set_value as setValue' { id `Ptr ()',`Double' } -> `()' #}
-instance (impl ~ (Double ->  IO ())) => Op (SetValue ()) Timer orig impl where
-  runOp _ _ adjuster value = withRef adjuster $ \adjusterPtr -> setValue' adjusterPtr value
-{# fun Fl_Timer_suspended as suspended' { id `Ptr ()' } -> `Bool' cToBool #}
-instance (impl ~ ( IO (Bool))) => Op (GetSuspended ()) Timer orig impl where
-  runOp _ _ adjuster = withRef adjuster $ \adjusterPtr -> suspended' adjusterPtr
-{# fun Fl_Timer_set_suspended as setSuspended' { id `Ptr ()', cFromBool `Bool' } -> `()' #}
-instance (impl ~ (Bool ->  IO ())) => Op (SetSuspended ()) Timer orig impl where
-  runOp _ _ adjuster s = withRef adjuster $ \adjusterPtr -> setSuspended' adjusterPtr s
-{# fun Fl_Timer_draw as draw'' { id `Ptr ()' } -> `()' #}
-instance (impl ~ (  IO ())) => Op (Draw ()) Timer orig impl where
-  runOp _ _ timer = withRef timer $ \timerPtr -> draw'' timerPtr
-{# fun Fl_Timer_draw_super as drawSuper' { id `Ptr ()' } -> `()' supressWarningAboutRes #}
-instance (impl ~ ( IO ())) => Op (DrawSuper ()) Timer orig impl where
-  runOp _ _ timer = withRef timer $ \timerPtr -> drawSuper' timerPtr
-{#fun Fl_Timer_handle as timerHandle' { id `Ptr ()', id `CInt' } -> `Int' #}
-instance (impl ~ (Event -> IO (Either UnknownEvent ()))) => Op (Handle ()) Timer orig impl where
-  runOp _ _ timer event = withRef timer (\p -> timerHandle' p (fromIntegral . fromEnum $ event)) >>= return  . successOrUnknownEvent
-{# fun Fl_Timer_handle_super as handleSuper' { id `Ptr ()',`Int' } -> `Int' #}
-instance (impl ~ (Event ->  IO (Either UnknownEvent ()))) => Op (HandleSuper ()) Timer orig impl where
-  runOp _ _ timer event = withRef timer $ \timerPtr -> handleSuper' timerPtr (fromIntegral (fromEnum event)) >>= return . successOrUnknownEvent
-{# fun Fl_Timer_resize as resize' { id `Ptr ()',`Int',`Int',`Int',`Int' } -> `()' supressWarningAboutRes #}
-instance (impl ~ (Rectangle -> IO ())) => Op (Resize ()) Timer orig impl where
-  runOp _ _ timer rectangle = withRef timer $ \timerPtr -> do
-                                 let (x_pos,y_pos,w_pos,h_pos) = fromRectangle rectangle
-                                 resize' timerPtr x_pos y_pos w_pos h_pos
-{# fun Fl_Timer_resize_super as resizeSuper' { id `Ptr ()',`Int',`Int',`Int',`Int' } -> `()' supressWarningAboutRes #}
-instance (impl ~ (Rectangle -> IO ())) => Op (ResizeSuper ()) Timer orig impl where
-  runOp _ _ timer rectangle =
-    let (x_pos, y_pos, width, height) = fromRectangle rectangle
-    in withRef timer $ \timerPtr -> resizeSuper' timerPtr x_pos y_pos width height
-{# fun Fl_Timer_hide as hide' { id `Ptr ()' } -> `()' #}
-instance (impl ~ (  IO ())) => Op (Hide ()) Timer orig impl where
-  runOp _ _ timer = withRef timer $ \timerPtr -> hide' timerPtr
-{# fun Fl_Timer_hide_super as hideSuper' { id `Ptr ()' } -> `()' supressWarningAboutRes #}
-instance (impl ~ ( IO ())) => Op (HideSuper ()) Timer orig impl where
-  runOp _ _ timer = withRef timer $ \timerPtr -> hideSuper' timerPtr
-{# fun Fl_Timer_show as show' { id `Ptr ()' } -> `()' #}
-instance (impl ~ (  IO ())) => Op (ShowWidget ()) Timer orig impl where
-  runOp _ _ timer = withRef timer $ \timerPtr -> show' timerPtr
-{# fun Fl_Timer_show_super as showSuper' { id `Ptr ()' } -> `()' supressWarningAboutRes #}
-instance (impl ~ ( IO ())) => Op (ShowWidgetSuper ()) Timer orig impl where
-  runOp _ _ timer = withRef timer $ \timerPtr -> showSuper' timerPtr
-
--- $functions
--- @
---
--- destroy :: 'Ref' 'Timer' -> 'IO' ()
---
--- draw :: 'Ref' 'Timer' -> 'IO' ()
---
--- drawSuper :: 'Ref' 'Timer' -> 'IO' ()
---
--- getDirection :: 'Ref' 'Timer' -> 'IO' ('CountDirection')
---
--- getSuspended :: 'Ref' 'Timer' -> 'IO' ('Bool')
---
--- getValue :: 'Ref' 'Timer' -> 'IO' ('Double')
---
--- handle :: 'Ref' 'Timer' -> 'Event' -> 'IO' ('Either' 'UnknownEvent' ())
---
--- handleSuper :: 'Ref' 'Timer' -> 'Event' -> 'IO' ('Either' 'UnknownEvent' ())
---
--- hide :: 'Ref' 'Timer' -> 'IO' ()
---
--- hideSuper :: 'Ref' 'Timer' -> 'IO' ()
---
--- resize :: 'Ref' 'Timer' -> 'Rectangle' -> 'IO' ()
---
--- resizeSuper :: 'Ref' 'Timer' -> 'Rectangle' -> 'IO' ()
---
--- setDirection :: 'Ref' 'Timer' -> 'CountDirection' -> 'IO' ()
---
--- setSuspended :: 'Ref' 'Timer' -> 'Bool' -> 'IO' ()
---
--- setValue :: 'Ref' 'Timer' -> 'Double' -> 'IO' ()
---
--- showWidget :: 'Ref' 'Timer' -> 'IO' ()
---
--- showWidgetSuper :: 'Ref' 'Timer' -> 'IO' ()
--- @
-
--- $hierarchy
--- @
--- "Graphics.UI.FLTK.LowLevel.Widget"
---  |
---  v
--- "Graphics.UI.FLTK.LowLevel.Timer"
--- @
