Все правильно. Дело осталось за малым:

Прекратить порочную  практику написания кода в BlackBox
типа этого:
msg: Controllers.TrackMsg DO
v.x := msg.x; v.y := msg.y;
v.context.GetSize(w, h); v.Restore(f, 0, 0, w, h);
REPEAT
f.Input(x, y, m, isDown);
IF (x # v.x) OR (y # v.y) THEN
v.x := x; v.y := y; v.Restore(f, 0, 0, w, h)
END
UNTIL ~isDown;

И поднять (в среднем) зарплату Оберонщиков до $2000-$3000
http://www.youthcareer.ru/vacancies
Тогда есть шансы победить