concept Screenshot {
  *() {} // for persistance
  *(BufferedImage img) {
    savePNG(pngFile(), img);
  }
  
  File pngFile() {
    ret prepareProgramFile("screenshot" + id + ".png");
  }
}

concept MarkedClip {
  Screenshot screenshot; // hmm...
  Rect positionInScreenshot;
  BWImage img;
  S description;
}