-/** Switches to the given workspace */
-void workspace_show(xcb_connection_t *conn, int workspace);
+/**
+ * Returns the previous workspace on the same output
+ *
+ */
+Con* workspace_prev_on_output(void);
+
+/**
+ * Focuses the previously focused workspace.
+ *
+ */
+void workspace_back_and_forth(void);
+
+/**
+ * Returns the previously focused workspace con, or NULL if unavailable.
+ *
+ */
+Con *workspace_back_and_forth_get(void);
+
+
+#if 0
+/**
+ * Assigns the given workspace to the given screen by correctly updating its
+ * state and reconfiguring all the clients on this workspace.
+ *
+ * This is called when initializing a screen and when re-assigning it to a
+ * different screen which just got available (if you configured it to be on
+ * screen 1 and you just plugged in screen 1).
+ *
+ */
+void workspace_assign_to(Workspace *ws, Output *screen, bool hide_it);