create: doRun();
run(): calls doRun(); at the end it (with finally) set context->null; to avoid mem leak
subclasses, override doRun, not run