diff --git a/documentation/current/method/eiffel-tutorial-et/et-instructions.wiki b/documentation/current/method/eiffel-tutorial-et/et-instructions.wiki
index 459166ee..f639774f 100644
--- a/documentation/current/method/eiffel-tutorial-et/et-instructions.wiki
+++ b/documentation/current/method/eiffel-tutorial-et/et-instructions.wiki
@@ -29,7 +29,7 @@ The rule that governs validity of assignments expands upon this and is generaliz
The phrase "'''compatible with'''" in this rule means that either it "'''conforms to'''" or "'''converts to'''".
-We saw conformance defined in the section on [[ET: Inheritance#polymorphism|polymorphism]]. [[ET: Other Mechanisms#Convertibility|Convertibility]] is explained in the section on [[ET: Other Mechanisms#Convertibility|Other Mechanisms]].
+We saw conformance defined in the section on [[ET: Inheritance#polymorphism|Polymorphism]]. [[ET: Other Mechanisms#Convertibility|Convertibility]] is explained in the section on [[ET: Other Mechanisms#Convertibility|Other Mechanisms]].
===Conditional===
diff --git a/documentation/current/method/eiffel-tutorial-et/et-other-mechanisms.wiki b/documentation/current/method/eiffel-tutorial-et/et-other-mechanisms.wiki
index 26fd0457..c327e7ae 100644
--- a/documentation/current/method/eiffel-tutorial-et/et-other-mechanisms.wiki
+++ b/documentation/current/method/eiffel-tutorial-et/et-other-mechanisms.wiki
@@ -138,8 +138,6 @@ The validity of a non-object call is restricted in ways that mirror these primar
==Convertibility==
-{{underconstruction}}
-
It is useful at times to designate the instances of one type can be created through conversion of instance of some other type. This can be done through an Eiffel mechanism called '''convertibility'''.
{{Definition|Convertibility: converts to, converts from|
@@ -170,11 +168,73 @@ Let's look at an example that may already be familiar to you.
In the snippet above, we have attributes declared of type STRING and SYSTEM_STRING.
-We know that if we have a attribute of type STRING that we can make a direct assignment of a .Net type of string (that is, the .Net type System.String which we see as class SYSTEM_STRING) to our STRING attribute.
+We know that if we have a attribute of type STRING that we can make a direct assignment of a .Net type of string (that is, the .Net type System.String which we see as class SYSTEM_STRING) to our STRING attribute.
-We know also that SYSTEM_STRING does not conform to STRING, so according to the definition of compatibility, this must happen by conversion.
+We know also that SYSTEM_STRING does not conform to STRING, so according to the definition of [[ET: Instructions#Assignment and attachment|compatibility]], this must happen through conversion.
-It is possible because SYSTEM_STRING converts to STRING.
+Therefore SYSTEM_STRING converts to STRING. And according to the definition above this means that either:
+
+# Class SYSTEM_STRING has a conversion query listing STRING as a conversion type, or
+# Class STRING has a conversion procedure listing SYSTEM_STRING as a conversion type
+
+In this case STRING has a conversion procedure for objects of type SYSTEM_STRING. Conversion procedures are always [[ET: The Dynamic Structure: Execution Model#Creating and initializing objects|creation procedures]]. So they appear in both the create and the convert parts of the class.
+
+
+ class STRING
+ …
+ create
+ make_from_cil
+ …
+ convert
+ make_from_cil ({SYSTEM_STRING})
+ …
+
+
+We won't show the implementation of the conversion procedure, but as you can imagine, it initializes its target with the content of its argument.
+
+Because of convertibility, this code:
+
+
+ my_string := my_system_string
+
+
+is equivalent to:
+
+
+ create my_string.make_from_cil (my_system_string)
+
+
+So, we've seen how SYSTEM_STRING converts to STRING. But, in the context of our example, we could also do this:
+
+
+ my_system_string := my_string
+
+
+Which means that STRING converts to SYSTEM_STRING. The convert part of class STRING also has a conversion query listing SYSTEM_STRING as a conversion type:
+
+
+ class STRING
+ …
+ create
+ make_from_cil
+ …
+ convert
+ make_from_cil ({SYSTEM_STRING})
+ to_cil: {SYSTEM_STRING}
+ …
+
+
+Because of convertibility, this code:
+
+
+ my_system_string := my_string
+
+
+is equivalent to:
+
+
+ my_system_string := my_string.to_cil
+
==Tuple types==