the (subtle) difference between the two [*MPinclusions and **MPinitializations*] is not a bug but a feature
If I understood correctly, *MPinitializations affects everything and can't be assigned to a specific instance (or can it?), in some cases (like mine) this difference is not so subtle. Look at the following example (not so minimal): \startMPinitializations picture p; p := image( draw fullsquare scaled 1cm; draw textext("1"); ); \stopMPinitializations \startMPinitializations picture s; s := image( draw (fullsquare rotated 45) scaled 1cm; draw textext("2"); ); \stopMPinitializations \defineMPinstance[foo][initializations=yes] \startMPcode{foo} picture q; q := image( draw fullcircle scaled 1cm; draw textext("3"); ); draw q; \stopMPcode \startMPcode{foo} draw p; draw q shifted (2cm, 0); draw s shifted (4cm, 0); \stopMPcode \defineMPinstance[bar][initializations=yes] \startMPcode{bar} picture r; r := image( draw fullcircle scaled 1cm; draw textext("4"); ); draw r; \stopMPcode \startMPcode{bar} draw p; draw r shifted (2cm, 0); draw s shifted (4cm, 0); \stopMPcode First, it shows why *MPinitializations can't replace *MPinclusions for me (it affects all instances), and second, it silently produces produces some really unexpected results: It looks like it should produce (by line) A circle with "3" inside (yes) A square with "1" inside (yes); A circle with "3" inside again (no, instead it produces circle with "2" inside); A rhombus with "2" inside (no, instead it produces a rhombus with "1") and so on. (tested on http://live.contextgarden.net/) In fact, I failed to declare picture variable inside with text inside one *MPcode environment and pass it to another safely (text either disappears or changes to other text, and this time ConTeXt returns no error), that surely is a bug? Sergey