Index: uspace/lib/ui/private/control.h
===================================================================
--- uspace/lib/ui/private/control.h	(revision 8009dc27f6b9ffbcd5c537a5e39b830b1bb8c841)
+++ uspace/lib/ui/private/control.h	(revision 8009dc27f6b9ffbcd5c537a5e39b830b1bb8c841)
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2020 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup libui
+ * @{
+ */
+/**
+ * @file UI control structure
+ *
+ */
+
+#ifndef _UI_PRIVATE_CONTROL_H
+#define _UI_PRIVATE_CONTROL_H
+
+#include <gfx/coord.h>
+#include <stdbool.h>
+
+/** Actual structure of UI control.
+ *
+ * UI control is the abstract base class to all UI controls (e.g. push button,
+ * label). This is private to libui.
+ */
+struct ui_control {
+	/** Pointer to layout element structure this control is attached to
+	 * or @c NULL if the control is not attached to a layout
+	 */
+	void *elemp;
+	/** Ops */
+	struct ui_control_ops *ops;
+	/** Extended data */
+	void *ext;
+};
+
+#endif
+
+/** @}
+ */
Index: uspace/lib/ui/private/fixed.h
===================================================================
--- uspace/lib/ui/private/fixed.h	(revision 8009dc27f6b9ffbcd5c537a5e39b830b1bb8c841)
+++ uspace/lib/ui/private/fixed.h	(revision 8009dc27f6b9ffbcd5c537a5e39b830b1bb8c841)
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2020 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup libui
+ * @{
+ */
+/**
+ * @file Fixed layout structure
+ *
+ */
+
+#ifndef _UI_PRIVATE_FIXED_H
+#define _UI_PRIVATE_FIXED_H
+
+#include <adt/list.h>
+#include <gfx/coord.h>
+#include <stdbool.h>
+#include <types/ui/fixed.h>
+
+/** Actual structure of fixed layout.
+ *
+ * This is private to libui.
+ */
+struct ui_fixed {
+	/** Layout elements (ui_fixed_elem_t) */
+	list_t elem;
+};
+
+/** Fixed layout element. */
+typedef struct {
+	/** Containing fixed layout */
+	struct ui_fixed *fixed;
+	/** Link to @c fixed->elem list */
+	link_t lelems;
+	/** Control */
+	ui_control_t *control;
+} ui_fixed_elem_t;
+
+extern ui_fixed_elem_t *ui_fixed_first(ui_fixed_t *f);
+extern ui_fixed_elem_t *ui_fixed_next(ui_fixed_elem_t *);
+
+#endif
+
+/** @}
+ */
Index: uspace/lib/ui/private/label.h
===================================================================
--- uspace/lib/ui/private/label.h	(revision f03d1308db413ac682d3d6bf4340b8c21226d67a)
+++ uspace/lib/ui/private/label.h	(revision 8009dc27f6b9ffbcd5c537a5e39b830b1bb8c841)
@@ -46,4 +46,6 @@
  */
 struct ui_label {
+	/** Base control object */
+	struct ui_control *control;
 	/** UI resource */
 	struct ui_resource *res;
Index: uspace/lib/ui/private/pbutton.h
===================================================================
--- uspace/lib/ui/private/pbutton.h	(revision f03d1308db413ac682d3d6bf4340b8c21226d67a)
+++ uspace/lib/ui/private/pbutton.h	(revision 8009dc27f6b9ffbcd5c537a5e39b830b1bb8c841)
@@ -46,4 +46,6 @@
  */
 struct ui_pbutton {
+	/** Base control object */
+	struct ui_control *control;
 	/** UI resource */
 	struct ui_resource *res;
