diff --git a/shared/prolog/xbgf1.pro b/shared/prolog/xbgf1.pro
index 25a5d663..11e77b2f 100644
--- a/shared/prolog/xbgf1.pro
+++ b/shared/prolog/xbgf1.pro
@@ -744,6 +744,8 @@ massage_rules(+(?(X)),*(X)).
massage_rules(?(X),';'(L)) :- length(L,2),member(X,L),member(true,L).
massage_rules(*(X),';'(L)) :- length(L,2),member(+(X),L),member(true,L).
massage_rules(+(X),','([X,*(X)])).
+massage_rules(','([X,*(','([Y,X]))]),','([*(','([X,Y])),X])).
+massage_rules(','([X,+(','([Y,X]))]),','([+(','([X,Y])),X])).
%
diff --git a/shared/xsd/xbgf.xsd b/shared/xsd/xbgf.xsd
index 22539b84..99ab5a01 100644
--- a/shared/xsd/xbgf.xsd
+++ b/shared/xsd/xbgf.xsd
@@ -109,6 +109,19 @@
+
+
+
+ TBD
+
+
+
+
+
+
+
+
+
@@ -128,6 +141,19 @@
+
+
+
+ TBD
+
+
+
+
+
+
+
+
+
@@ -145,20 +171,30 @@
-
+
- A replace variant that works on production level. When this
- transformation is executed, all current productions for the
- nonterminal are dropped, and all the given ones are added
- to the grammar.
+ TBD
-
+
+
+
+
+
+
+
+
+ To be explained later.
+
+
+
+
+
+
-
@@ -179,7 +215,7 @@
- TBD
+ TBD
@@ -492,6 +528,23 @@
+
+
+
+ A replace variant that works on production level. When this
+ transformation is executed, all current productions for the
+ nonterminal are dropped, and all the given ones are added
+ to the grammar.
+
+
+
+
+
+
+
+
+
+
@@ -689,7 +742,7 @@
-
+
@@ -767,7 +820,7 @@
-
+
@@ -794,45 +847,6 @@
-
-
-
- TBD
-
-
-
-
-
-
-
-
-
-
-
-
- TBD
-
-
-
-
-
-
-
-
-
-
-
-
- TBD
-
-
-
-
-
-
-
-
-
@@ -890,20 +904,6 @@
-
-
-
- To be explained later.
-
-
-
-
-
-
-
-
-
-
@@ -938,4 +938,4 @@
-
+
\ No newline at end of file
diff --git a/topics/presentation/metrics/xbgf_overview.py b/topics/presentation/metrics/xbgf_overview.py
index 6a5683d5..0b05617a 100755
--- a/topics/presentation/metrics/xbgf_overview.py
+++ b/topics/presentation/metrics/xbgf_overview.py
@@ -3,10 +3,16 @@
import sys
import elementtree.ElementTree as ET
-safexbgf = ('eliminate','introduce','chain', 'designate', 'deyaccify','distribute',
- 'extract', 'factor', 'fold', 'horizontal','inline', 'massage',
- 'rename', 'reroot', 'unfold','vertical', 'yaccify', 'unchain', 'skip')
-incdecxbgf = ('add', 'narrow', 'remove','unite', 'widen', 'rassoc', 'lassoc')
+safexbgf = ('abridge','detour','anonymize','deanonymize','unlabel','designate',
+ 'deyaccify','yaccify','eliminate','introduce','inline','extract',
+ 'unfold','fold','horizontal','vertical','distribute','factor',
+ 'massage','chain','unchain','skip','reroot','rename')
+#safexbgf = ('eliminate','introduce','chain', 'designate', 'deyaccify','distribute',
+# 'extract', 'factor', 'fold', 'horizontal','inline', 'massage',
+# 'rename', 'reroot', 'unfold','vertical', 'yaccify', 'unchain', 'skip')
+incdecxbgf = ('remove','add','disappear','appear','narrow','widen',
+ 'downgrade','upgrade','rassoc','lassoc','unite')
+#incdecxbgf = ('add', 'narrow', 'remove','unite', 'widen', 'rassoc', 'lassoc')
messyxbgf = ('permute', 'dump')
rkeys = ('LOC','NOI','NOX','NI~','NI+','NI!','SGO','COR','NI^','SID','SRE')
diff --git a/topics/transformation/xbgf/tests/massage7.baseline b/topics/transformation/xbgf/tests/massage7.baseline
new file mode 100644
index 00000000..228526b0
--- /dev/null
+++ b/topics/transformation/xbgf/tests/massage7.baseline
@@ -0,0 +1,27 @@
+
+
+
+ N
+
+
+
+ a
+
+
+
+
+
+
+ b
+
+
+ a
+
+
+
+
+
+
+
+
+
diff --git a/topics/transformation/xbgf/tests/massage7.bgf b/topics/transformation/xbgf/tests/massage7.bgf
new file mode 100644
index 00000000..41fb91d0
--- /dev/null
+++ b/topics/transformation/xbgf/tests/massage7.bgf
@@ -0,0 +1,27 @@
+
+
+
+ N
+
+
+
+
+
+
+
+ a
+
+
+ b
+
+
+
+
+
+
+ a
+
+
+
+
+
diff --git a/topics/transformation/xbgf/tests/massage7.xbgf b/topics/transformation/xbgf/tests/massage7.xbgf
new file mode 100644
index 00000000..ae4c7b49
--- /dev/null
+++ b/topics/transformation/xbgf/tests/massage7.xbgf
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+ a
+
+
+ b
+
+
+
+
+
+
+ a
+
+
+
+
+
+
+ a
+
+
+
+
+
+
+ b
+
+
+ a
+
+
+
+
+
+
+
+
+
\ No newline at end of file