diff --git a/config.h b/config.h
index dd9efe8..442b606 100644
--- a/config.h
+++ b/config.h
@@ -1,25 +1,29 @@
 #ifdef _WINDOW_CONFIG
 
-/* default window dimensions (overwritten via -g option):      */
-enum { WIN_WIDTH  = 800, WIN_HEIGHT = 600 };
+/* default window dimensions (overwritten via -g option): */
+enum {
+	WIN_WIDTH  = 800,
+	WIN_HEIGHT = 600
+};
 
-/* default color for window background:                        *
- * (see X(7) "COLOR NAMES" section for valid values)           */
+/* default color for window background: */
 static const char * const BG_COLOR  = "#777777";
-/* default color for thumbnail selection:                      */
+/* default color for thumbnail selection: */
 static const char * const SEL_COLOR = "#DDDDDD";
+/* (see X(7) section "COLOR NAMES" for valid values) */
 
 #endif
 #ifdef _IMAGE_CONFIG
 
-/* how should images be scaled when they are loaded?:          *
- * (also controllable via -d/-s/-Z/-z options)                 *
- *   SCALE_DOWN: 100%, but fit large images into window,       *
- *   SCALE_FIT:  fit all images into window,                   *
- *   SCALE_ZOOM: use current zoom level, 100% at startup       */
+/* how should images be scaled when they are loaded?
+ * (also controllable via -d/-s/-Z/-z options)
+ *   SCALE_DOWN: 100%, but fit large images into window,
+ *   SCALE_FIT:  fit all images into window,
+ *   SCALE_ZOOM: use current zoom level, 100% at startup
+ */
 static const scalemode_t SCALE_MODE = SCALE_DOWN;
 
-/* levels (percent) to use when zooming via '-' and '+':       */
+/* levels (percent) to use when zooming via '-' and '+': */
 static const float zoom_levels[] = {
 	 12.5,  25.0,  50.0,  75.0,
 	100.0, 150.0, 200.0, 400.0, 800.0
@@ -28,92 +32,92 @@ static const float zoom_levels[] = {
 #endif
 #ifdef _THUMBS_CONFIG
 
-/* default dimension of thumbnails (width == height):          */
+/* default dimension of thumbnails (width == height): */
 enum { THUMB_SIZE = 60 };
 
 #endif
 #ifdef _MAPPINGS_CONFIG
 
-/* keyboard mappings for image and thumbnail mode:             */
+/* keyboard mappings for image and thumbnail mode: */
 static const keymap_t keys[] = {
-	/* ctrl    key              function           argument      */
-	{ False,   XK_q,            quit,              (arg_t) None },
-	{ False,   XK_r,            reload,            (arg_t) None },
-	{ False,   XK_f,            toggle_fullscreen, (arg_t) None },
-	{ False,   XK_a,            toggle_antialias,  (arg_t) None },
-	{ False,   XK_A,            toggle_alpha,      (arg_t) None },
-	{ False,   XK_Return,       switch_mode,       (arg_t) None },
+	/* ctrl   key               function              argument */
+	{ False,  XK_q,             it_quit,              (arg_t) None },
+	{ False,  XK_Return,        it_switch_mode,       (arg_t) None },
+	{ False,  XK_f,             it_toggle_fullscreen, (arg_t) None },
 
-	{ False,   XK_g,            first,             (arg_t) None },
-	{ False,   XK_G,            last,              (arg_t) None },
-	{ False,   XK_n,            navigate,          (arg_t) +1 },
-	{ False,   XK_space,        navigate,          (arg_t) +1 },
-	{ False,   XK_p,            navigate,          (arg_t) -1 },
-	{ False,   XK_BackSpace,    navigate,          (arg_t) -1 },
-	{ False,   XK_bracketright, navigate,          (arg_t) +10 },
-	{ False,   XK_bracketleft,  navigate,          (arg_t) -10 },
+	{ False,  XK_r,             it_reload_image,      (arg_t) None },
+	{ False,  XK_D,             it_remove_image,      (arg_t) None },
 
-	{ False,   XK_D,            remove_image,      (arg_t) None },
+	{ False,  XK_n,             i_navigate,           (arg_t) +1 },
+	{ False,  XK_space,         i_navigate,           (arg_t) +1 },
+	{ False,  XK_p,             i_navigate,           (arg_t) -1 },
+	{ False,  XK_BackSpace,     i_navigate,           (arg_t) -1 },
+	{ False,  XK_bracketright,  i_navigate,           (arg_t) +10 },
+	{ False,  XK_bracketleft,   i_navigate,           (arg_t) -10 },
+	{ False,  XK_g,             it_first,             (arg_t) None },
+	{ False,  XK_G,             it_last,              (arg_t) None },
 
-	{ False,   XK_h,            move,              (arg_t) DIR_LEFT },
-	{ False,   XK_Left,         move,              (arg_t) DIR_LEFT },
-	{ False,   XK_j,            move,              (arg_t) DIR_DOWN },
-	{ False,   XK_Down,         move,              (arg_t) DIR_DOWN },
-	{ False,   XK_k,            move,              (arg_t) DIR_UP },
-	{ False,   XK_Up,           move,              (arg_t) DIR_UP },
-	{ False,   XK_l,            move,              (arg_t) DIR_RIGHT },
-	{ False,   XK_Right,        move,              (arg_t) DIR_RIGHT },
+	{ False,  XK_h,             it_move,              (arg_t) DIR_LEFT },
+	{ False,  XK_Left,          it_move,              (arg_t) DIR_LEFT },
+	{ False,  XK_j,             it_move,              (arg_t) DIR_DOWN },
+	{ False,  XK_Down,          it_move,              (arg_t) DIR_DOWN },
+	{ False,  XK_k,             it_move,              (arg_t) DIR_UP },
+	{ False,  XK_Up,            it_move,              (arg_t) DIR_UP },
+	{ False,  XK_l,             it_move,              (arg_t) DIR_RIGHT },
+	{ False,  XK_Right,         it_move,              (arg_t) DIR_RIGHT },
 
-	{ True,    XK_h,            pan_screen,        (arg_t) DIR_LEFT },
-	{ True,    XK_Left,         pan_screen,        (arg_t) DIR_LEFT },
-	{ True,    XK_j,            pan_screen,        (arg_t) DIR_DOWN },
-	{ True,    XK_Down,         pan_screen,        (arg_t) DIR_DOWN },
-	{ True,    XK_k,            pan_screen,        (arg_t) DIR_UP },
-	{ True,    XK_Up,           pan_screen,        (arg_t) DIR_UP },
-	{ True,    XK_l,            pan_screen,        (arg_t) DIR_RIGHT },
-	{ True,    XK_Right,        pan_screen,        (arg_t) DIR_RIGHT },
+	{ True,   XK_h,             i_pan_screen,         (arg_t) DIR_LEFT },
+	{ True,   XK_Left,          i_pan_screen,         (arg_t) DIR_LEFT },
+	{ True,   XK_j,             i_pan_screen,         (arg_t) DIR_DOWN },
+	{ True,   XK_Down,          i_pan_screen,         (arg_t) DIR_DOWN },
+	{ True,   XK_k,             i_pan_screen,         (arg_t) DIR_UP },
+	{ True,   XK_Up,            i_pan_screen,         (arg_t) DIR_UP },
+	{ True,   XK_l,             i_pan_screen,         (arg_t) DIR_RIGHT },
+	{ True,   XK_Right,         i_pan_screen,         (arg_t) DIR_RIGHT },
 
-	{ False,   XK_H,            pan_edge,          (arg_t) DIR_LEFT },
-	{ False,   XK_J,            pan_edge,          (arg_t) DIR_DOWN },
-	{ False,   XK_K,            pan_edge,          (arg_t) DIR_UP },
-	{ False,   XK_L,            pan_edge,          (arg_t) DIR_RIGHT },
+	{ False,  XK_H,             i_pan_edge,           (arg_t) DIR_LEFT },
+	{ False,  XK_J,             i_pan_edge,           (arg_t) DIR_DOWN },
+	{ False,  XK_K,             i_pan_edge,           (arg_t) DIR_UP },
+	{ False,  XK_L,             i_pan_edge,           (arg_t) DIR_RIGHT },
 
-	{ False,   XK_plus,         zoom,              (arg_t) +1 },
-	{ False,   XK_equal,        zoom,              (arg_t) +1 },
-	{ False,   XK_KP_Add,       zoom,              (arg_t) +1 },
-	{ False,   XK_minus,        zoom,              (arg_t) -1 },
-	{ False,   XK_KP_Subtract,  zoom,              (arg_t) -1 },
-	{ False,   XK_0,            zoom,              (arg_t) None },
-	{ False,   XK_KP_0,         zoom,              (arg_t) None },
-	{ False,   XK_w,            fit_to_win,        (arg_t) None },
-	{ False,   XK_W,            fit_to_img,        (arg_t) None },
+	{ False,  XK_plus,          i_zoom,               (arg_t) +1 },
+	{ False,  XK_equal,         i_zoom,               (arg_t) +1 },
+	{ False,  XK_KP_Add,        i_zoom,               (arg_t) +1 },
+	{ False,  XK_minus,         i_zoom,               (arg_t) -1 },
+	{ False,  XK_KP_Subtract,   i_zoom,               (arg_t) -1 },
+	{ False,  XK_0,             i_zoom,               (arg_t) None },
+	{ False,  XK_KP_0,          i_zoom,               (arg_t) None },
+	{ False,  XK_w,             i_fit_to_win,         (arg_t) None },
+	{ False,  XK_W,             i_fit_to_img,         (arg_t) None },
 
-	{ False,   XK_less,         rotate,            (arg_t) DIR_LEFT },
-	{ False,   XK_greater,      rotate,            (arg_t) DIR_RIGHT },
+	{ False,  XK_less,          i_rotate,             (arg_t) DIR_LEFT },
+	{ False,  XK_greater,       i_rotate,             (arg_t) DIR_RIGHT },
 
-	                            /* open the current image with given program:  */
-	{ True,    XK_g,            open_with,         (arg_t) "gimp" },
+	{ False,  XK_a,             i_toggle_antialias,   (arg_t) None },
+	{ False,  XK_A,             i_toggle_alpha,       (arg_t) None },
 
-	                            /* run shell command line on the current file,
-	                             * '#' is replaced by filename:                */
-	{ True,    XK_less,         run_command,       (arg_t) "mogrify -rotate -90 #" },
-	{ True,    XK_greater,      run_command,       (arg_t) "mogrify -rotate +90 #" },
-	{ True,    XK_comma,        run_command,       (arg_t) "jpegtran -rotate 270 -copy all -outfile # #" },
-	{ True,    XK_period,       run_command,       (arg_t) "jpegtran -rotate 90 -copy all -outfile # #" },
+	/* open current image with given program: */
+	{ True,   XK_g,             it_open_with,         (arg_t) "gimp" },
+
+	/* run shell command line on current file ('#' is replaced by file path: */
+	{ True,   XK_less,          it_shell_cmd,         (arg_t) "mogrify -rotate -90 #" },
+	{ True,   XK_greater,       it_shell_cmd,         (arg_t) "mogrify -rotate +90 #" },
+	{ True,   XK_comma,         it_shell_cmd,         (arg_t) "jpegtran -rotate 270 -copy all -outfile # #" },
+	{ True,   XK_period,        it_shell_cmd,         (arg_t) "jpegtran -rotate 90 -copy all -outfile # #" },
 };
 
-/* mouse button mappings for image mode:                       */
+/* mouse button mappings for image mode: */
 static const button_t buttons[] = {
-	/* ctrl    shift    button       function      argument      */
-	{ False,   False,   Button1,     navigate,     (arg_t) +1 },
-	{ False,   False,   Button3,     navigate,     (arg_t) -1 },
-	{ False,   False,   Button2,     drag,         (arg_t) None },
-	{ False,   False,   Button4,     move,         (arg_t) DIR_UP },
-	{ False,   False,   Button5,     move,         (arg_t) DIR_DOWN },
-	{ False,   True,    Button4,     move,         (arg_t) DIR_LEFT },
-	{ False,   True,    Button5,     move,         (arg_t) DIR_RIGHT },
-	{ True,    False,   Button4,     zoom,         (arg_t) +1 },
-	{ True,    False,   Button5,     zoom,         (arg_t) -1 },
+	/* ctrl   shift   button    function              argument */
+	{ False,  False,  Button1,  i_navigate,           (arg_t) +1 },
+	{ False,  False,  Button3,  i_navigate,           (arg_t) -1 },
+	{ False,  False,  Button2,  i_drag,               (arg_t) None },
+	{ False,  False,  Button4,  it_move,              (arg_t) DIR_UP },
+	{ False,  False,  Button5,  it_move,              (arg_t) DIR_DOWN },
+	{ False,  True,   Button4,  it_move,              (arg_t) DIR_LEFT },
+	{ False,  True,   Button5,  it_move,              (arg_t) DIR_RIGHT },
+	{ True,   False,  Button4,  i_zoom,               (arg_t) +1 },
+	{ True,   False,  Button5,  i_zoom,               (arg_t) -1 },
 };
 
 #endif
diff --git a/events.c b/events.c
index 01a5b92..95ae80a 100644
--- a/events.c
+++ b/events.c
@@ -93,7 +93,7 @@ void on_keypress(XKeyEvent *kev) {
 
 	for (i = 0; i < LEN(keys); i++) {
 		if (keys[i].ksym == ksym && keymask(&keys[i], kev->state)) {
-			if (keys[i].handler && keys[i].handler(keys[i].arg))
+			if (keys[i].cmd && keys[i].cmd(keys[i].arg))
 				redraw();
 			return;
 		}
@@ -114,7 +114,7 @@ void on_buttonpress(XButtonEvent *bev) {
 			if (buttons[i].button == bev->button &&
 			    buttonmask(&buttons[i], bev->state))
 			{
-				if (buttons[i].handler && buttons[i].handler(buttons[i].arg))
+				if (buttons[i].cmd && buttons[i].cmd(buttons[i].arg))
 					redraw();
 				return;
 			}
@@ -241,51 +241,14 @@ void run() {
 }
 
 
-/* handler functions for key and button mappings: */
+/* command functions for key and button mappings: */
 
-int quit(arg_t a) {
+int it_quit(arg_t a) {
 	cleanup();
 	exit(0);
 }
 
-int reload(arg_t a) {
-	if (mode == MODE_NORMAL) {
-		load_image(fileidx);
-		return 1;
-	} else {
-		return 0;
-	}
-}
-
-int toggle_fullscreen(arg_t a) {
-	win_toggle_fullscreen(&win);
-	if (mode == MODE_NORMAL)
-		img.checkpan = 1;
-	else
-		tns.dirty = 1;
-	timo_redraw = TO_WIN_RESIZE;
-	return 0;
-}
-
-int toggle_antialias(arg_t a) {
-	if (mode == MODE_NORMAL) {
-		img_toggle_antialias(&img);
-		return 1;
-	} else {
-		return 0;
-	}
-}
-
-int toggle_alpha(arg_t a) {
-	if (mode == MODE_NORMAL) {
-		img.alpha ^= 1;
-		return 1;
-	} else {
-		return 0;
-	}
-}
-
-int switch_mode(arg_t a) {
+int it_switch_mode(arg_t a) {
 	if (mode == MODE_NORMAL) {
 		if (!tns.thumbs)
 			tns_init(&tns, filecnt);
@@ -303,7 +266,45 @@ int switch_mode(arg_t a) {
 	return 1;
 }
 
-int navigate(arg_t a) {
+int it_toggle_fullscreen(arg_t a) {
+	win_toggle_fullscreen(&win);
+	if (mode == MODE_NORMAL)
+		img.checkpan = 1;
+	else
+		tns.dirty = 1;
+	timo_redraw = TO_WIN_RESIZE;
+	return 0;
+}
+
+int it_reload_image(arg_t a) {
+	if (mode == MODE_NORMAL) {
+		load_image(fileidx);
+	} else if (!tns_load(&tns, tns.sel, &files[tns.sel], 0)) {
+		remove_file(tns.sel, 0);
+		tns.dirty = 1;
+		if (tns.sel >= tns.cnt)
+			tns.sel = tns.cnt - 1;
+	}
+	return 1;
+}
+
+int it_remove_image(arg_t a) {
+	if (mode == MODE_NORMAL) {
+		remove_file(fileidx, 1);
+		load_image(fileidx >= filecnt ? filecnt - 1 : fileidx);
+		return 1;
+	} else if (tns.sel < tns.cnt) {
+		remove_file(tns.sel, 1);
+		tns.dirty = 1;
+		if (tns.sel >= tns.cnt)
+			tns.sel = tns.cnt - 1;
+		return 1;
+	} else {
+		return 0;
+	}
+}
+
+int i_navigate(arg_t a) {
 	int n = (int) a;
 
 	if (mode == MODE_NORMAL) {
@@ -321,7 +322,7 @@ int navigate(arg_t a) {
 	return 0;
 }
 
-int first(arg_t a) {
+int it_first(arg_t a) {
 	if (mode == MODE_NORMAL && fileidx != 0) {
 		load_image(0);
 		return 1;
@@ -334,7 +335,7 @@ int first(arg_t a) {
 	}
 }
 
-int last(arg_t a) {
+int it_last(arg_t a) {
 	if (mode == MODE_NORMAL && fileidx != filecnt - 1) {
 		load_image(filecnt - 1);
 		return 1;
@@ -347,23 +348,7 @@ int last(arg_t a) {
 	}
 }
 
-int remove_image(arg_t a) {
-	if (mode == MODE_NORMAL) {
-		remove_file(fileidx, 1);
-		load_image(fileidx >= filecnt ? filecnt - 1 : fileidx);
-		return 1;
-	} else if (tns.sel < tns.cnt) {
-		remove_file(tns.sel, 1);
-		tns.dirty = 1;
-		if (tns.sel >= tns.cnt)
-			tns.sel = tns.cnt - 1;
-		return 1;
-	} else {
-		return 0;
-	}
-}
-
-int move(arg_t a) {
+int it_move(arg_t a) {
 	direction_t dir = (direction_t) a;
 
 	if (mode == MODE_NORMAL)
@@ -372,7 +357,7 @@ int move(arg_t a) {
 		return tns_move_selection(&tns, &win, dir);
 }
 
-int pan_screen(arg_t a) {
+int i_pan_screen(arg_t a) {
 	direction_t dir = (direction_t) a;
 
 	if (mode == MODE_NORMAL)
@@ -381,7 +366,7 @@ int pan_screen(arg_t a) {
 		return 0;
 }
 
-int pan_edge(arg_t a) {
+int i_pan_edge(arg_t a) {
 	direction_t dir = (direction_t) a;
 
 	if (mode == MODE_NORMAL)
@@ -390,12 +375,12 @@ int pan_edge(arg_t a) {
 		return 0;
 }
 
-/* Xlib helper function for drag() */
+/* Xlib helper function for i_drag() */
 Bool is_motionnotify(Display *d, XEvent *e, XPointer a) {
 	return e != NULL && e->type == MotionNotify;
 }
 
-int drag(arg_t a) {
+int i_drag(arg_t a) {
 	int dx = 0, dy = 0, i, ox, oy, x, y;
 	unsigned int ui;
 	Bool dragging = True, next = False;
@@ -445,22 +430,7 @@ int drag(arg_t a) {
 	return 0;
 }
 
-int rotate(arg_t a) {
-	direction_t dir = (direction_t) a;
-
-	if (mode == MODE_NORMAL) {
-		if (dir == DIR_LEFT) {
-			img_rotate_left(&img, &win);
-			return 1;
-		} else if (dir == DIR_RIGHT) {
-			img_rotate_right(&img, &win);
-			return 1;
-		}
-	}
-	return 0;
-}
-
-int zoom(arg_t a) {
+int i_zoom(arg_t a) {
 	int scale = (int) a;
 
 	if (mode != MODE_NORMAL)
@@ -473,7 +443,7 @@ int zoom(arg_t a) {
 		return img_zoom(&img, &win, 1.0);
 }
 
-int fit_to_win(arg_t a) {
+int i_fit_to_win(arg_t a) {
 	int ret;
 
 	if (mode == MODE_NORMAL) {
@@ -485,7 +455,7 @@ int fit_to_win(arg_t a) {
 	}
 }
 
-int fit_to_img(arg_t a) {
+int i_fit_to_img(arg_t a) {
 	int ret, x, y;
 	unsigned int w, h;
 
@@ -504,7 +474,40 @@ int fit_to_img(arg_t a) {
 	}
 }
 
-int open_with(arg_t a) {
+int i_rotate(arg_t a) {
+	direction_t dir = (direction_t) a;
+
+	if (mode == MODE_NORMAL) {
+		if (dir == DIR_LEFT) {
+			img_rotate_left(&img, &win);
+			return 1;
+		} else if (dir == DIR_RIGHT) {
+			img_rotate_right(&img, &win);
+			return 1;
+		}
+	}
+	return 0;
+}
+
+int i_toggle_antialias(arg_t a) {
+	if (mode == MODE_NORMAL) {
+		img_toggle_antialias(&img);
+		return 1;
+	} else {
+		return 0;
+	}
+}
+
+int i_toggle_alpha(arg_t a) {
+	if (mode == MODE_NORMAL) {
+		img.alpha ^= 1;
+		return 1;
+	} else {
+		return 0;
+	}
+}
+
+int it_open_with(arg_t a) {
 	const char *prog = (const char*) a;
 	pid_t pid;
 
@@ -523,7 +526,7 @@ int open_with(arg_t a) {
 	return 0;
 }
 
-int run_command(arg_t a) {
+int it_shell_cmd(arg_t a) {
 	const char *cline = (const char*) a;
 	char *cn, *cmdline;
 	const char *co, *fpath;
diff --git a/events.h b/events.h
index 977e148..0b48055 100644
--- a/events.h
+++ b/events.h
@@ -22,11 +22,12 @@
 #include <X11/Xlib.h>
 
 typedef void* arg_t;
+typedef int (*command_f)(arg_t);
 
 typedef struct {
 	Bool ctrl;
 	KeySym ksym;
-	int (*handler)(arg_t);
+	command_f cmd;
 	arg_t arg;
 } keymap_t;
 
@@ -34,32 +35,32 @@ typedef struct {
 	Bool ctrl;
 	Bool shift;
 	unsigned int button;
-	int (*handler)(arg_t);
+	command_f cmd;
 	arg_t arg;
 } button_t;
 
 void run();
 
-/* handler functions for key and button mappings: */
-int quit(arg_t);
-int reload(arg_t);
-int toggle_fullscreen(arg_t);
-int toggle_antialias(arg_t);
-int toggle_alpha(arg_t);
-int switch_mode(arg_t);
-int navigate(arg_t);
-int first(arg_t);
-int last(arg_t);
-int remove_image(arg_t);
-int move(arg_t);
-int pan_screen(arg_t);
-int pan_edge(arg_t);
-int drag(arg_t);
-int rotate(arg_t);
-int zoom(arg_t);
-int fit_to_win(arg_t);
-int fit_to_img(arg_t);
-int open_with(arg_t);
-int run_command(arg_t);
+/* command functions for key and button mappings: */
+int it_quit(arg_t);
+int it_switch_mode(arg_t);
+int it_toggle_fullscreen(arg_t);
+int it_reload_image(arg_t);
+int it_remove_image(arg_t);
+int i_navigate(arg_t);
+int it_first(arg_t);
+int it_last(arg_t);
+int it_move(arg_t);
+int i_pan_screen(arg_t);
+int i_pan_edge(arg_t);
+int i_drag(arg_t);
+int i_zoom(arg_t);
+int i_fit_to_win(arg_t);
+int i_fit_to_img(arg_t);
+int i_rotate(arg_t);
+int i_toggle_antialias(arg_t);
+int i_toggle_alpha(arg_t);
+int it_open_with(arg_t);
+int it_shell_cmd(arg_t);
 
 #endif /* EVENTS_H */