diff --git a/widget.hpp b/widget.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..c2a6e392fa5b96c247411d11fe907f44878dbf56
--- /dev/null
+++ b/widget.hpp
@@ -0,0 +1,20 @@
+#ifndef WIDGET_HPP
+#define WIDGET_HPP
+
+
+#include "graphics.hpp"
+
+class Widget {
+protected:
+    int x, y, width, height;
+    bool selected;
+public:
+    Widget(int x_, int y_, int w_, int h_);
+    virtual void draw() const = 0;
+    virtual void handle(genv::event ev) = 0;
+    virtual bool is_selected(int mx, int my) const;
+    virtual void set_focus(bool f);
+    virtual ~Widget() {}
+};
+
+#endif