diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt
index aee64702..c613c9e4 100644
--- a/samples/CMakeLists.txt
+++ b/samples/CMakeLists.txt
@@ -47,3 +47,4 @@ add_e2d_sample(05)
add_e2d_sample(06)
add_e2d_sample(07)
add_e2d_sample(08)
+add_e2d_sample(09)
diff --git a/samples/bin/library/scenes/sample_09.json b/samples/bin/library/scenes/sample_09.json
new file mode 100644
index 00000000..75a15970
--- /dev/null
+++ b/samples/bin/library/scenes/sample_09.json
@@ -0,0 +1,8 @@
+{
+ "prototype" : "../prefabs/scene_prefab.json",
+ "children" : [{
+ "prototype" : "../prefabs/background_prefab.json"
+ },{
+ "prototype" : "../prefabs/camera_prefab.json"
+ }]
+}
diff --git a/samples/sources/sample_09/sample_09.cpp b/samples/sources/sample_09/sample_09.cpp
new file mode 100644
index 00000000..4a61d1cb
--- /dev/null
+++ b/samples/sources/sample_09/sample_09.cpp
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * This file is part of the "Enduro2D"
+ * For conditions of distribution and use, see copyright notice in LICENSE.md
+ * Copyright (C) 2018-2020, by Matvey Cherevko (blackmatov@gmail.com)
+ ******************************************************************************/
+
+#include "../common.hpp"
+using namespace e2d;
+
+namespace
+{
+ class game_system final : public systems::update_system {
+ public:
+ void process(
+ ecs::registry& owner,
+ const systems::update_event& event) override
+ {
+ E2D_UNUSED(owner, event);
+ const keyboard& k = the().keyboard();
+
+ if ( k.is_key_just_released(keyboard_key::f12) ) {
+ the().toggle_visible(!the().visible());
+ }
+
+ if ( k.is_key_just_released(keyboard_key::escape) ) {
+ the().set_should_close(true);
+ }
+
+ if ( k.is_key_pressed(keyboard_key::lsuper) && k.is_key_just_released(keyboard_key::enter) ) {
+ the().toggle_fullscreen(!the().fullscreen());
+ }
+ }
+ };
+
+ class game final : public starter::application {
+ public:
+ bool initialize() final {
+ return create_scene()
+ && create_systems();
+ }
+ private:
+ bool create_scene() {
+ auto scene_prefab_res = the().load_asset("scenes/sample_09.json");
+ auto scene_go = scene_prefab_res
+ ? the().instantiate(scene_prefab_res->content())
+ : gobject();
+ return scene_go.valid();
+ }
+
+ bool create_systems() {
+ ecs::registry_filler(the().registry())
+ .feature(ecs::feature()
+ .add_system());
+ return true;
+ }
+ };
+}
+
+int e2d_main(int argc, char *argv[]) {
+ const auto starter_params = starter::parameters(
+ engine::parameters("sample_09", "enduro2d")
+ .window_params(engine::window_parameters()
+ .size({1024, 512}))
+ .timer_params(engine::timer_parameters()
+ .maximal_framerate(100)));
+ modules::initialize(argc, argv, starter_params).start();
+ modules::shutdown();
+ return 0;
+}