diff --git a/.mps/modules.xml b/.mps/modules.xml
index e7400f0d..98f7212f 100644
--- a/.mps/modules.xml
+++ b/.mps/modules.xml
@@ -34,14 +34,15 @@
-
+
+
-
+
diff --git a/build.xml b/build.xml
index 06cf0e69..726c4219 100644
--- a/build.xml
+++ b/build.xml
@@ -85,6 +85,7 @@
+
@@ -95,7 +96,10 @@
+
+
+
@@ -116,9 +120,12 @@
+
+
+
@@ -134,12 +141,19 @@
+
+
+
+
+
+
+
@@ -150,6 +164,7 @@
+
@@ -400,6 +415,7 @@
+
@@ -410,7 +426,10 @@
+
+
+
@@ -440,6 +459,7 @@
+
@@ -460,12 +480,19 @@
+
+
+
+
+
+
+
@@ -476,6 +503,7 @@
+
@@ -915,17 +943,24 @@
+
+
+
+
+
+
+
@@ -940,11 +975,15 @@
+
+
+
+
@@ -954,14 +993,24 @@
+
+
+
+
+
+
+
+
+
+
@@ -1266,8 +1315,10 @@
+
+
@@ -1279,8 +1330,12 @@
+
+
+
+
@@ -1293,9 +1348,12 @@
+
+
+
@@ -1311,12 +1369,19 @@
+
+
+
+
+
+
+
@@ -1325,6 +1390,7 @@
+
@@ -1538,20 +1604,27 @@
+
+
+
+
+
+
+
@@ -1561,13 +1634,17 @@
+
+
+
+
@@ -1577,14 +1654,24 @@
+
+
+
+
+
+
+
+
+
+
@@ -1742,17 +1829,24 @@
+
+
+
+
+
+
+
@@ -1763,11 +1857,15 @@
+
+
+
+
@@ -1777,14 +1875,24 @@
+
+
+
+
+
+
+
+
+
+
@@ -1938,20 +2046,27 @@
+
+
+
+
+
+
+
@@ -1961,13 +2076,17 @@
+
+
+
+
@@ -1977,14 +2096,24 @@
+
+
+
+
+
+
+
+
+
+
@@ -2097,6 +2226,7 @@
+
@@ -2107,7 +2237,10 @@
+
+
+
@@ -2128,9 +2261,12 @@
+
+
+
@@ -2146,12 +2282,19 @@
+
+
+
+
+
+
+
@@ -2162,6 +2305,7 @@
+
@@ -2348,6 +2492,7 @@
+
@@ -2358,7 +2503,10 @@
+
+
+
@@ -2388,6 +2536,7 @@
+
@@ -2408,12 +2557,19 @@
+
+
+
+
+
+
+
@@ -2424,6 +2580,7 @@
+
@@ -2794,17 +2951,24 @@
+
+
+
+
+
+
+
@@ -2819,11 +2983,15 @@
+
+
+
+
@@ -2833,14 +3001,24 @@
+
+
+
+
+
+
+
+
+
+
@@ -3145,17 +3323,24 @@
+
+
+
+
+
+
+
@@ -3170,11 +3355,15 @@
+
+
+
+
@@ -3184,14 +3373,24 @@
+
+
+
+
+
+
+
+
+
+
@@ -3349,20 +3548,27 @@
+
+
+
+
+
+
+
@@ -3372,13 +3578,17 @@
+
+
+
+
@@ -3388,14 +3598,24 @@
+
+
+
+
+
+
+
+
+
+
@@ -3553,17 +3773,24 @@
+
+
+
+
+
+
+
@@ -3574,11 +3801,15 @@
+
+
+
+
@@ -3588,14 +3819,24 @@
+
+
+
+
+
+
+
+
+
+
@@ -3831,6 +4072,11 @@
+
+
+
+
+
@@ -3863,7 +4109,6 @@
-
@@ -3878,9 +4123,11 @@
+
+
@@ -4046,7 +4293,9 @@
+
+
@@ -4061,6 +4310,7 @@
+
@@ -4104,7 +4354,9 @@
+
+
@@ -4255,6 +4507,8 @@
+
+
@@ -4274,6 +4528,7 @@
+
@@ -4332,6 +4587,8 @@
+
+
@@ -4412,6 +4669,8 @@
+
+
@@ -4536,7 +4795,9 @@
+
+
@@ -4551,6 +4812,7 @@
+
@@ -4611,6 +4873,8 @@
+
+
@@ -4624,6 +4888,7 @@
+
@@ -4648,7 +4913,9 @@
+
+
@@ -4731,6 +4998,8 @@
+
+
@@ -4835,7 +5104,9 @@
+
+
@@ -4868,6 +5139,7 @@
+
@@ -4904,7 +5176,9 @@
+
+
@@ -5101,7 +5375,9 @@
+
+
@@ -5118,6 +5394,7 @@
+
@@ -5152,7 +5429,9 @@
+
+
@@ -5522,15 +5801,23 @@
+
+
+
+
+
+
+
+
@@ -5544,6 +5831,7 @@
+
@@ -5555,7 +5843,6 @@
-
@@ -5570,9 +5857,11 @@
+
+
@@ -5664,7 +5953,6 @@
-
diff --git a/samples/fitch/build.xml b/samples/fitch/build.xml
index 8155465c..bf7b8954 100644
--- a/samples/fitch/build.xml
+++ b/samples/fitch/build.xml
@@ -46,6 +46,7 @@
+
@@ -58,7 +59,10 @@
+
+
+
@@ -75,9 +79,12 @@
+
+
+
@@ -93,13 +100,20 @@
+
+
+
+
+
+
+
@@ -110,6 +124,7 @@
+
@@ -206,8 +221,10 @@
+
+
@@ -218,8 +235,12 @@
+
+
+
+
@@ -232,9 +253,12 @@
+
+
+
@@ -249,12 +273,19 @@
+
+
+
+
+
+
+
@@ -263,6 +294,7 @@
+
@@ -359,8 +391,10 @@
+
+
@@ -372,8 +406,12 @@
+
+
+
+
@@ -387,9 +425,12 @@
+
+
+
@@ -405,12 +446,19 @@
+
+
+
+
+
+
+
@@ -419,6 +467,7 @@
+
@@ -515,8 +564,10 @@
+
+
@@ -528,8 +579,12 @@
+
+
+
+
@@ -542,9 +597,12 @@
+
+
+
@@ -560,12 +618,19 @@
+
+
+
+
+
+
+
@@ -574,6 +639,7 @@
+
@@ -755,6 +821,7 @@
+
@@ -802,6 +869,11 @@
+
+
+
+
+
@@ -822,6 +894,7 @@
+
@@ -832,7 +905,6 @@
-
@@ -846,9 +918,11 @@
+
+
@@ -919,7 +993,9 @@
+
+
@@ -944,6 +1020,7 @@
+
@@ -993,7 +1070,9 @@
+
+
@@ -1040,7 +1119,9 @@
+
+
@@ -1066,6 +1147,7 @@
+
@@ -1115,7 +1197,9 @@
+
+
@@ -1163,7 +1247,9 @@
+
+
@@ -1190,6 +1276,7 @@
+
@@ -1239,7 +1326,9 @@
+
+
@@ -1288,7 +1377,9 @@
+
+
@@ -1316,6 +1407,7 @@
+
@@ -1363,7 +1455,9 @@
+
+
@@ -1414,7 +1508,9 @@
+
+
@@ -1488,6 +1584,7 @@
+
@@ -1518,6 +1615,7 @@
+
@@ -1527,14 +1625,22 @@
+
+
+
+
+
+
+
+
@@ -1548,16 +1654,17 @@
+
+
-
@@ -1571,9 +1678,11 @@
+
+
@@ -1645,7 +1754,6 @@
-
diff --git a/samples/lambdacalc/build.xml b/samples/lambdacalc/build.xml
index e5e56f28..cb8c983a 100644
--- a/samples/lambdacalc/build.xml
+++ b/samples/lambdacalc/build.xml
@@ -43,8 +43,10 @@
+
+
@@ -56,8 +58,12 @@
+
+
+
+
@@ -76,9 +82,11 @@
+
+
@@ -94,12 +102,19 @@
+
+
+
+
+
+
+
@@ -108,6 +123,7 @@
+
@@ -290,6 +306,11 @@
+
+
+
+
+
@@ -309,6 +330,7 @@
+
@@ -319,7 +341,6 @@
-
@@ -333,9 +354,11 @@
+
+
@@ -390,7 +413,9 @@
+
+
@@ -415,6 +440,7 @@
+
@@ -452,7 +478,9 @@
+
+
@@ -554,6 +582,7 @@
+
@@ -563,14 +592,22 @@
+
+
+
+
+
+
+
+
@@ -584,16 +621,17 @@
+
+
-
@@ -607,9 +645,11 @@
+
+
@@ -675,7 +715,6 @@
-
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguage.closuresExt/jetbrains.mps.baseLanguage.closuresExt.mpl b/samples/mpscore/languages/jetbrains.mps.baseLanguage.closuresExt/jetbrains.mps.baseLanguage.closuresExt.mpl
index 90e42eeb..53e2a0fc 100644
--- a/samples/mpscore/languages/jetbrains.mps.baseLanguage.closuresExt/jetbrains.mps.baseLanguage.closuresExt.mpl
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguage.closuresExt/jetbrains.mps.baseLanguage.closuresExt.mpl
@@ -49,6 +49,7 @@
+
@@ -111,6 +112,7 @@
+
@@ -127,6 +129,7 @@
fd392034-7849-419d-9071-12563d152375(jetbrains.mps.baseLanguage.closures)
0fda14cc-a416-4c81-869a-2175d8b3325d(jetbrains.mps.baseLanguageExt)
88dcbb14-19c3-4776-8f81-33611ca4d87c(jetbrains.mps.baseLanguage.sequence)
+ 96eeb076-cd7e-4797-9c2a-348e3f826e65(jetbrains.mps.baseLanguage.function)
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguage.closuresExt/models/jetbrains.mps.baseLanguage.closuresExt.types.mps b/samples/mpscore/languages/jetbrains.mps.baseLanguage.closuresExt/models/jetbrains.mps.baseLanguage.closuresExt.types.mps
index d1c0cd51..90f6f5ae 100644
--- a/samples/mpscore/languages/jetbrains.mps.baseLanguage.closuresExt/models/jetbrains.mps.baseLanguage.closuresExt.types.mps
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguage.closuresExt/models/jetbrains.mps.baseLanguage.closuresExt.types.mps
@@ -12,6 +12,7 @@
+
@@ -89,7 +90,6 @@
-
@@ -189,23 +189,12 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -338,19 +327,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -361,7 +337,6 @@
-
@@ -395,11 +370,6 @@
-
-
-
-
-
@@ -426,15 +396,9 @@
-
-
-
-
-
-
@@ -454,9 +418,6 @@
-
-
-
@@ -488,7 +449,7 @@
-
+
@@ -524,131 +485,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -672,9 +508,9 @@
-
+
-
+
@@ -682,7 +518,7 @@
-
+
@@ -809,351 +645,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1755,9 +1246,9 @@
-
+
-
+
@@ -1765,7 +1256,7 @@
-
+
@@ -2567,9 +2058,9 @@
-
+
-
+
@@ -3071,9 +2562,9 @@
-
+
-
+
@@ -3085,7 +2576,7 @@
-
+
@@ -3230,6 +2721,7 @@
+
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/generator/templates/main@generator.mps b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/generator/templates/main@generator.mps
new file mode 100644
index 00000000..522e0519
--- /dev/null
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/generator/templates/main@generator.mps
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/jetbrains.mps.baseLanguage.function.mpl b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/jetbrains.mps.baseLanguage.function.mpl
new file mode 100644
index 00000000..55c1b4ae
--- /dev/null
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/jetbrains.mps.baseLanguage.function.mpl
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0fda14cc-a416-4c81-869a-2175d8b3325d(jetbrains.mps.baseLanguageExt)
+
+
+
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.behavior.mps b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.behavior.mps
new file mode 100644
index 00000000..340af28b
--- /dev/null
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.behavior.mps
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.constraints.mps b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.constraints.mps
new file mode 100644
index 00000000..e8a04548
--- /dev/null
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.constraints.mps
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.editor.mps b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.editor.mps
new file mode 100644
index 00000000..a1788f27
--- /dev/null
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.editor.mps
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.structure.mps b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.structure.mps
new file mode 100644
index 00000000..5bb14877
--- /dev/null
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.structure.mps
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.types.mps b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.types.mps
new file mode 100644
index 00000000..7b848102
--- /dev/null
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.types.mps
@@ -0,0 +1,681 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.typesystem.mps b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.typesystem.mps
new file mode 100644
index 00000000..64e6a14b
--- /dev/null
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguage.function/models/jetbrains.mps.baseLanguage.function.typesystem.mps
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/mpscore/solutions/jetbrains.mps.baseLanguage.closuresExt.test/jetbrains.mps.baseLanguage.closuresExt.test.msd b/samples/mpscore/solutions/jetbrains.mps.baseLanguage.closuresExt.test/jetbrains.mps.baseLanguage.closuresExt.test.msd
index 553b0232..3b253b78 100644
--- a/samples/mpscore/solutions/jetbrains.mps.baseLanguage.closuresExt.test/jetbrains.mps.baseLanguage.closuresExt.test.msd
+++ b/samples/mpscore/solutions/jetbrains.mps.baseLanguage.closuresExt.test/jetbrains.mps.baseLanguage.closuresExt.test.msd
@@ -24,6 +24,7 @@
+
@@ -32,7 +33,6 @@
-