diff --git a/doc/tutorial.md b/doc/tutorial.md
index 6e04431..eca9d69 100644
--- a/doc/tutorial.md
+++ b/doc/tutorial.md
@@ -15,7 +15,98 @@ Getting Started
Building your own module
------------------------
+------------------------
+A [Module](/doc/concepts.md#modules) as we already describe it, enable us to add functionallity based on your needs.
+
+Here we will describe the basics steps to write your own modules.
+
+ * The first thing to do is inherit form the class [CMS_MODULE] () and redefine the register_hooks feature.
+ * Implement (via inheritance) the needed [Hooks] (/doc/concepts.md#hooks).
+
+```
+ class
+ MY_NEW_MODULE
+
+ inherit
+
+ CMS_MODULE
+ redefine
+ register_hooks
+ end
+
+ CMS_HOOK_BLOCK
+
+ CMS_HOOK_MENU_SYSTEM_ALTER
+
+
+ create
+ make
+
+feature {NONE} -- Initialization
+
+ make
+ -- Create current module
+ do
+ name := "new module"
+ version := "1.0"
+ description := "Eiffel new module"
+ package := "example"
+ end
+
+feature -- Access: router
+
+ router (a_api: CMS_API): WSF_ROUTER
+ -- Node router.
+ do
+ create Result.make (1)
+ Result.handle_with_request_methods ("/demo", create {WSF_URI_AGENT_HANDLER}.make (agent handle_demo (a_api, ?, ?)), Result.methods_head_get)
+ end
+
+feature -- Hooks
+
+ register_hooks (a_response: CMS_RESPONSE)
+ do
+ a_response.subscribe_to_menu_system_alter_hook (Current)
+ a_response.subscribe_to_block_hook (Current)
+ end
+
+ block_list: ITERABLE [like {CMS_BLOCK}.name]
+ do
+ -- List of block names, managed by current object.
+ end
+
+ get_block_view (a_block_id: READABLE_STRING_8; a_response: CMS_RESPONSE)
+ do
+ -- Get block object identified by `a_block_id' and associate with `a_response'.
+ end
+
+ menu_system_alter (a_menu_system: CMS_MENU_SYSTEM; a_response: CMS_RESPONSE)
+ local
+ lnk: CMS_LOCAL_LINK
+ do
+ create lnk.make ("Demo", "/demo/")
+ a_menu_system.primary_menu.extend (lnk)
+ end
+
+feature -- Handler
+
+ handle_demo (a_api: CMS_API; req: WSF_REQUEST; res: WSF_RESPONSE;)
+ local
+ r: NOT_IMPLEMENTED_ERROR_CMS_RESPONSE
+ do
+ create r.make (req, res, a_api)
+ r.set_main_content ("NODE module does not yet implement %"" + req.path_info + "%" ...")
+ r.add_error_message ("NODE Module: not yet implemented")
+ r.execute
+ end
+
+end
+
+```
+
+
+
+
Lifecycle