--- /dev/null
+#ifndef TACOS_APP_INIT_HPP_
+#define TACOS_APP_INIT_HPP_
+
+namespace tacos {
+
+struct InitAlut {
+
+ InitAlut();
+ ~InitAlut();
+
+ InitAlut(const InitAlut &) = delete;
+ InitAlut &operator =(const InitAlut &) = delete;
+
+};
+
+struct InitGL {
+
+ InitGL(bool double_buffer = true, int samples = 1);
+
+};
+
+struct InitIMG {
+
+ InitIMG();
+ ~InitIMG() noexcept;
+
+ InitIMG(const InitIMG &) = delete;
+ InitIMG &operator =(const InitIMG &) = delete;
+
+};
+
+struct InitSDL {
+
+ InitSDL();
+ ~InitSDL() noexcept;
+
+ InitSDL(const InitSDL &) = delete;
+ InitSDL &operator =(const InitSDL &) = delete;
+
+};
+
+struct InitTTF {
+
+ InitTTF();
+ ~InitTTF() noexcept;
+
+ InitTTF(const InitTTF &) = delete;
+ InitTTF &operator =(const InitTTF &) = delete;
+
+};
+
+struct Init {
+
+ InitSDL sdl;
+ InitGL gl;
+ InitIMG img;
+ InitTTF ttf;
+ InitAlut alut;
+
+};
+
+}
+
+#endif