+/**
+ * In output_containing_rect, we check if any active output contains part of the container.
+ * We do this by checking if the output rect is intersected by the Rect.
+ * This is the 2-dimensional counterpart of get_output_containing.
+ * Returns the output with the maximum intersecting area.
+ *
+ */
+Output *output_containing_rect(Rect rect);
+
+/**
+ * Gets the output which is the next one in the given direction.
+ *
+ * If close_far == CLOSEST_OUTPUT, then the output next to the current one will
+ * selected. If close_far == FARTHEST_OUTPUT, the output which is the last one
+ * in the given direction will be selected.
+ *
+ * NULL will be returned when no active outputs are present in the direction
+ * specified (note that ‘current’ counts as such an output).
+ *
+ */
+Output *get_output_next(direction_t direction, Output *current, output_close_far_t close_far);
+
+/**
+ * Like get_output_next with close_far == CLOSEST_OUTPUT, but wraps.
+ *
+ * For example if get_output_next(D_DOWN, x, FARTHEST_OUTPUT) = NULL, then
+ * get_output_next_wrap(D_DOWN, x) will return the topmost output.
+ *
+ * This function always returns a output: if no active outputs can be found,
+ * current itself is returned.
+ *
+ */
+Output *get_output_next_wrap(direction_t direction, Output *current);
+
+/**
+ * Creates an output covering the root window.
+ *
+ */
+Output *create_root_output(xcb_connection_t *conn);