diff --git a/Makefile b/Makefile
index 4eb78a9..dd65786 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-VERSION = git-20110928
+VERSION = git-20110929
 
 CC      = gcc
 CFLAGS  = -Wall -pedantic -O2
diff --git a/image.c b/image.c
index 77a89b0..cb867b5 100644
--- a/image.c
+++ b/image.c
@@ -303,11 +303,11 @@ bool img_load(img_t *img, const fileinfo_t *file) {
 	(void) fmt;
 
 #if EXIF_SUPPORT
-	if (STREQ(fmt, "jpeg"))
+	if (streq(fmt, "jpeg"))
 		exif_auto_orientate(file);
 #endif
 #if GIF_SUPPORT
-	if (STREQ(fmt, "gif"))
+	if (streq(fmt, "gif"))
 		img_load_gif(img, file);
 #endif
 
diff --git a/main.c b/main.c
index ed11a9b..18db413 100644
--- a/main.c
+++ b/main.c
@@ -144,7 +144,7 @@ void set_timeout(timeout_f handler, int time, bool overwrite) {
 		if (timeouts[i].handler == handler) {
 			if (!timeouts[i].active || overwrite) {
 				gettimeofday(&timeouts[i].when, 0);
-				MSEC_ADD_TO_TIMEVAL(time, &timeouts[i].when);
+				tv_add_msec(&timeouts[i].when, time);
 				timeouts[i].active = true;
 			}
 			return;
@@ -170,7 +170,7 @@ bool check_timeouts(struct timeval *t) {
 	gettimeofday(&now, 0);
 	while (i < ARRLEN(timeouts)) {
 		if (timeouts[i].active) {
-			tdiff = TIMEDIFF(&timeouts[i].when, &now);
+			tdiff = tv_diff(&timeouts[i].when, &now);
 			if (tdiff <= 0) {
 				timeouts[i].active = false;
 				if (timeouts[i].handler)
@@ -183,7 +183,7 @@ bool check_timeouts(struct timeval *t) {
 		i++;
 	}
 	if (tmin > 0 && t)
-		MSEC_TO_TIMEVAL(tmin, t);
+		tv_set_msec(t, tmin);
 	return tmin > 0;
 }
 
diff --git a/options.c b/options.c
index 892c31f..1405dc4 100644
--- a/options.c
+++ b/options.c
@@ -140,5 +140,5 @@ void parse_options(int argc, char **argv) {
 	_options.filenames = argv + optind;
 	_options.filecnt = argc - optind;
 	_options.from_stdin = _options.filecnt == 1 &&
-	                      STREQ(_options.filenames[0], "-");
+	                      streq(_options.filenames[0], "-");
 }
diff --git a/thumbs.c b/thumbs.c
index 92fbd22..4a7c0db 100644
--- a/thumbs.c
+++ b/thumbs.c
@@ -255,7 +255,7 @@ bool tns_load(tns_t *tns, int n, const fileinfo_t *file,
 	(void) fmt;
 
 #if EXIF_SUPPORT
-	if (!cache_hit && STREQ(fmt, "jpeg"))
+	if (!cache_hit && streq(fmt, "jpeg"))
 		exif_auto_orientate(file);
 #endif
 
diff --git a/util.c b/util.c
index de8dfae..a205312 100644
--- a/util.c
+++ b/util.c
@@ -270,7 +270,7 @@ char* r_readdir(r_dir_t *rdir) {
 
 	while (1) {
 		if (rdir->dir && (dentry = readdir(rdir->dir))) {
-			if (STREQ(dentry->d_name, ".") || STREQ(dentry->d_name, ".."))
+			if (streq(dentry->d_name, ".") || streq(dentry->d_name, ".."))
 				continue;
 
 			len = strlen(rdir->name) + strlen(dentry->d_name) + 2;
diff --git a/util.h b/util.h
index ff749a5..7bd6a61 100644
--- a/util.h
+++ b/util.h
@@ -22,8 +22,11 @@
 #include <stdio.h>
 #include <stdarg.h>
 #include <dirent.h>
+#include <sys/time.h>
 #include <sys/types.h>
 
+#include "types.h"
+
 #ifndef MIN
 #define MIN(a,b) ((a) < (b) ? (a) : (b))
 #endif
@@ -33,21 +36,6 @@
 
 #define ARRLEN(a) (sizeof(a) / sizeof((a)[0]))
 
-#define STREQ(a,b) (!strcmp((a), (b)))
-
-#define TIMEDIFF(t1,t2) (((t1)->tv_sec - (t2)->tv_sec) * 1000 +  \
-                         ((t1)->tv_usec - (t2)->tv_usec) / 1000)
-
-#define MSEC_TO_TIMEVAL(t,tv) {         \
-  (tv)->tv_sec = (t) / 1000;            \
-  (tv)->tv_usec = (t) % 1000 * 1000;    \
-}
-
-#define MSEC_ADD_TO_TIMEVAL(t,tv) {     \
-  (tv)->tv_sec += (t) / 1000;           \
-  (tv)->tv_usec += (t) % 1000 * 1000;   \
-}
-
 typedef struct {
 	DIR *dir;
 	char *name;
@@ -58,6 +46,29 @@ typedef struct {
 	int stlen;
 } r_dir_t;
 
+static inline
+bool streq(const char *a, const char *b) {
+	return strcmp(a, b) == 0;
+}
+
+static inline
+long tv_diff(const struct timeval *t1, const struct timeval *t2) {
+	return (t1->tv_sec - t2->tv_sec) * 1000 +
+	       (t1->tv_usec - t2->tv_usec) / 1000;
+}
+
+static inline
+void tv_set_msec(struct timeval *t, int msec) {
+	t->tv_sec = msec / 1000;
+	t->tv_usec = msec % 1000 * 1000;
+}
+
+static inline
+void tv_add_msec(struct timeval *t, int msec) {
+	t->tv_sec += msec / 1000;
+	t->tv_usec += msec % 1000 * 1000;
+}
+
 void* s_malloc(size_t);
 void* s_realloc(void*, size_t);
 char* s_strdup(char*);