-void slog(char *fmt, ...);
-void die(char *fmt, ...);
-void *smalloc(size_t size);
-void *scalloc(size_t size);
-char *sstrdup(const char *str);
-void start_application(const char *command);
-void check_error(xcb_connection_t *conn, xcb_void_cookie_t cookie, char *err_message);
-char *convert_utf8_to_ucs2(char *input, int *real_strlen);
-void remove_client_from_container(xcb_connection_t *conn, Client *client, Container *container);
-void set_focus(xcb_connection_t *conn, Client *client);
-void leave_stack_mode(xcb_connection_t *conn, Container *container);
-void switch_layout_mode(xcb_connection_t *conn, Container *container, int mode);
-void warp_pointer_into(xcb_connection_t *conn, Client *client);
-void toggle_fullscreen(xcb_connection_t *conn, Client *client);
+bool rect_contains(Rect rect, uint32_t x, uint32_t y);
+Rect rect_add(Rect a, Rect b);
+
+/**
+ * Updates *destination with new_value and returns true if it was changed or false
+ * if it was the same
+ *
+ */
+bool update_if_necessary(uint32_t *destination, const uint32_t new_value);
+
+/**
+ * exec()s an i3 utility, for example the config file migration script or
+ * i3-nagbar. This function first searches $PATH for the given utility named,
+ * then falls back to the dirname() of the i3 executable path and then falls
+ * back to the dirname() of the target of /proc/self/exe (on linux).
+ *
+ * This function should be called after fork()ing.
+ *
+ * The first argument of the given argv vector will be overwritten with the
+ * executable name, so pass NULL.
+ *
+ * If the utility cannot be found in any of these locations, it exits with
+ * return code 2.
+ *
+ */
+void exec_i3_utility(char *name, char *argv[]);
+
+/**
+ * Checks a generic cookie for errors and quits with the given message if
+ * there was an error.
+ *
+ */
+void check_error(xcb_connection_t *conn, xcb_void_cookie_t cookie,
+ char *err_message);
+
+/**
+ * This function resolves ~ in pathnames.
+ * It may resolve wildcards in the first part of the path, but if no match
+ * or multiple matches are found, it just returns a copy of path as given.
+ *
+ */
+char *resolve_tilde(const char *path);
+
+/**
+ * Checks if the given path exists by calling stat().
+ *
+ */
+bool path_exists(const char *path);
+
+
+/**
+ * Returns the name of a temporary file with the specified prefix.
+ *
+ */
+char *get_process_filename(const char *prefix);
+
+/**
+ * Restart i3 in-place
+ * appends -a to argument list to disable autostart
+ *
+ */
+void i3_restart(bool forget_layout);
+
+#if defined(__OpenBSD__) || defined(__APPLE__)
+
+/*
+ * Taken from FreeBSD
+ * Find the first occurrence of the byte string s in byte string l.
+ *
+ */
+void *memmem(const void *l, size_t l_len, const void *s, size_t s_len);
+
+#endif