diff --git a/fltk/extensions.patch b/fltk/extensions.patch
index 1cb5c74..1ee7036 100644
--- a/fltk/extensions.patch
+++ b/fltk/extensions.patch
@@ -1,15 +1,26 @@
 *** fltk-1.3.0/CMakeLists.txt	2011-01-06 04:24:58.000000000 -0600
---- fltk/CMakeLists.txt	2011-06-22 23:01:51.000000000 -0500
+--- fltk-1.3.0-new/CMakeLists.txt	2011-06-23 17:21:42.000000000 -0500
+***************
+*** 49,52 ****
+--- 49,56 ----
+  include_directories(${FLTK_BINARY_DIR} ${FLTK_SOURCE_DIR})
+  
++ if(NOT CMAKE_BUILD_TYPE)
++   set(CMAKE_BUILD_TYPE Release)
++ endif()
++ 
+  #######################################################################
+  # platform dependent information
 ***************
 *** 62,65 ****
---- 62,66 ----
+--- 66,70 ----
      set(HAVE_DIRENT_H 1)
      set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
 +    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Carbon")
   endif(APPLE)
   
 *** fltk-1.3.0/FL/Enumerations.H	2011-05-21 16:55:59.000000000 -0500
---- fltk/FL/Enumerations.H	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/FL/Enumerations.H	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 293,297 ****
         following FL_PASTE event.
@@ -99,7 +110,7 @@
   };
   /*@}*/		// group: Cursors  
 *** fltk-1.3.0/FL/Fl.H	2011-05-23 13:01:29.000000000 -0500
---- fltk/FL/Fl.H	2011-06-22 22:35:31.000000000 -0500
+--- fltk-1.3.0-new/FL/Fl.H	2011-06-22 22:35:31.000000000 -0500
 ***************
 *** 109,112 ****
 --- 109,115 ----
@@ -131,7 +142,7 @@
       Initiate a Drag And Drop operation. The selection buffer should be
       filled with relevant data before calling this method. FLTK will
 *** fltk-1.3.0/FL/Fl_Image.H	2011-01-30 03:24:40.000000000 -0600
---- fltk/FL/Fl_Image.H	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/FL/Fl_Image.H	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 35,38 ****
 --- 35,39 ----
@@ -149,7 +160,7 @@
     virtual ~Fl_RGB_Image();
     virtual Fl_Image *copy(int W, int H);
 *** fltk-1.3.0/FL/Fl_Widget.H	2011-04-24 12:09:41.000000000 -0500
---- fltk/FL/Fl_Widget.H	2011-06-22 22:41:26.000000000 -0500
+--- fltk-1.3.0-new/FL/Fl_Widget.H	2011-06-22 22:41:26.000000000 -0500
 ***************
 *** 109,112 ****
 --- 109,113 ----
@@ -214,7 +225,7 @@
   
     /** Checks if w is a child of this widget.
 *** fltk-1.3.0/FL/Fl_Window.H	2011-04-15 16:38:05.000000000 -0500
---- fltk/FL/Fl_Window.H	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/FL/Fl_Window.H	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 38,41 ****
 --- 38,42 ----
@@ -309,7 +320,7 @@
     static void default_callback(Fl_Window*, void* v);
     
 *** fltk-1.3.0/FL/fl_draw.H	2011-06-02 03:06:09.000000000 -0500
---- fltk/FL/fl_draw.H	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/FL/fl_draw.H	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 758,762 ****
   FL_EXPORT void fl_overlay_rect(int x,int y,int w,int h);
@@ -325,7 +336,7 @@
   FL_EXPORT const char* fl_expand_text(const char* from, char* buf, int maxbuf,
                                        double maxw, int& n, double &width,
 *** fltk-1.3.0/FL/mac.H	2011-05-12 06:50:43.000000000 -0500
---- fltk/FL/mac.H	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/FL/mac.H	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 142,146 ****
     WindowRef window_ref(void);
@@ -341,7 +352,7 @@
     static CGImageRef CGImage_from_window_rect(Fl_Window *win, int x, int y, int w, int h);
     static unsigned char *bitmap_from_window_rect(Fl_Window *win, int x, int y, int w, int h, int *bytesPerPixel);
 *** fltk-1.3.0/FL/names.h	2010-11-28 15:06:39.000000000 -0600
---- fltk/FL/names.h	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/FL/names.h	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 76,79 ****
 --- 76,80 ----
@@ -351,7 +362,7 @@
   };
   
 *** fltk-1.3.0/FL/win32.H	2011-05-23 13:32:47.000000000 -0500
---- fltk/FL/win32.H	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/FL/win32.H	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 93,96 ****
 --- 93,98 ----
@@ -362,7 +373,7 @@
     static Fl_X* make(Fl_Window*);
   };
 *** fltk-1.3.0/FL/x.H	2011-05-21 05:05:19.000000000 -0500
---- fltk/FL/x.H	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/FL/x.H	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 164,167 ****
 --- 164,169 ----
@@ -373,7 +384,7 @@
     static void make_xid(Fl_Window*,XVisualInfo* =fl_visual, Colormap=fl_colormap);
     static Fl_X* set_xid(Fl_Window*, Window);
 *** fltk-1.3.0/configh.in	2011-06-09 11:21:40.000000000 -0500
---- fltk/configh.in	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/configh.in	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 118,121 ****
 --- 118,137 ----
@@ -398,7 +409,7 @@
    * __APPLE_QUARTZ__:
    *
 *** fltk-1.3.0/configure.in	2011-03-06 10:54:58.000000000 -0600
---- fltk/configure.in	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/configure.in	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 875,878 ****
 --- 875,880 ----
@@ -436,7 +447,7 @@
   	dnl Check for overlay visuals...
   	AC_PATH_PROG(XPROP, xprop)
 *** fltk-1.3.0/documentation/src/enumerations.dox	2011-05-11 10:49:30.000000000 -0500
---- fltk/documentation/src/enumerations.dox	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/documentation/src/enumerations.dox	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 58,61 ****
 --- 58,62 ----
@@ -446,7 +457,7 @@
   
   
 *** fltk-1.3.0/documentation/src/events.dox	2011-05-11 10:49:30.000000000 -0500
---- fltk/documentation/src/events.dox	2011-06-22 22:35:32.000000000 -0500
+--- fltk-1.3.0-new/documentation/src/events.dox	2011-06-22 22:35:32.000000000 -0500
 ***************
 *** 301,304 ****
 --- 301,311 ----
