diff --git a/minui/minui.h b/minui/minui.h
index 8228248..103318a 100644
--- a/minui/minui.h
+++ b/minui/minui.h
@@ -17,34 +17,24 @@
 #ifndef _MINUI_H_
 #define _MINUI_H_
 
-#include <sys/types.h>
-
 #include <stdbool.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-typedef struct {
-    int width;
-    int height;
-    int row_bytes;
-    int pixel_bytes;
-    unsigned char* data;
-} GRSurface;
-
-typedef GRSurface* gr_surface;
+typedef void* gr_surface;
+typedef unsigned short gr_pixel;
 
 int gr_init(void);
 void gr_exit(void);
 
 int gr_fb_width(void);
 int gr_fb_height(void);
-
+gr_pixel *gr_fb_data(void);
 void gr_flip(void);
 void gr_fb_blank(bool blank);
 
-void gr_clear();  // clear entire surface to current color
 void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
 void gr_fill(int x1, int y1, int x2, int y2);
 
@@ -53,7 +43,7 @@
 int gr_text(int x, int y, const char *s, ...);
 int gr_text_impl(int x, int y, const char *s, int bold);
 
-void gr_texticon(int x, int y, gr_surface icon);
+ void gr_texticon(int x, int y, gr_surface icon);
 int gr_measure(const char *s);
 void gr_font_size(int *x, int *y);
 void gr_get_memory_surface(gr_surface);
@@ -66,7 +56,7 @@
 // see http://www.mjmwired.net/kernel/Documentation/input/ for info.
 struct input_event;
 
-typedef int (*ev_callback)(int fd, uint32_t epevents, void *data);
+typedef int (*ev_callback)(int fd, short revents, void *data);
 typedef int (*ev_set_key_callback)(int code, int value, void *data);
 
 int ev_init(ev_callback input_cb, void *data);
@@ -81,46 +71,14 @@
  */
 int ev_wait(int timeout);
 
-int ev_get_input(int fd, uint32_t epevents, struct input_event *ev);
+int ev_get_input(int fd, short revents, struct input_event *ev);
 void ev_dispatch(void);
-int ev_get_epollfd(void);
 
 // Resources
 
-// res_create_*_surface() functions return 0 if no error, else
-// negative.
-//
-// A "display" surface is one that is intended to be drawn to the
-// screen with gr_blit().  An "alpha" surface is a grayscale image
-// interpreted as an alpha mask used to render text in the current
-// color (with gr_text() or gr_texticon()).
-//
-// All these functions load PNG images from "/res/images/${name}.png".
-
-// Load a single display surface from a PNG image.
-int res_create_display_surface(const char* name, gr_surface* pSurface);
-
-// Load an array of display surfaces from a single PNG image.  The PNG
-// should have a 'Frames' text chunk whose value is the number of
-// frames this image represents.  The pixel data itself is interlaced
-// by row.
-int res_create_multi_display_surface(const char* name,
-                                     int* frames, gr_surface** pSurface);
-
-// Load a single alpha surface from a grayscale PNG image.
-int res_create_alpha_surface(const char* name, gr_surface* pSurface);
-
-// Load part of a grayscale PNG image that is the first match for the
-// given locale.  The image is expected to be a composite of multiple
-// translations of the same text, with special added rows that encode
-// the subimages' size and intended locale in the pixel data.  See
-// development/tools/recovery_l10n for an app that will generate these
-// specialized images from Android resources.
-int res_create_localized_alpha_surface(const char* name, const char* locale,
-                                       gr_surface* pSurface);
-
-// Free a surface allocated by any of the res_create_*_surface()
-// functions.
+// Returns 0 if no error, else negative.
+int res_create_surface(const char* name, gr_surface* pSurface);
+int res_create_localized_surface(const char* name, gr_surface* pSurface);
 void res_free_surface(gr_surface surface);
 static inline int res_create_display_surface(const char* name, gr_surface* pSurface) {
     return res_create_surface(name, pSurface);
